更新springboot版本至2.1.16.RELEASE,集成mybatis-plus,添加lombok,多环境修改
This commit is contained in:
parent
acfb6a56bb
commit
241e5188c6
19
README.md
19
README.md
|
|
@ -1,5 +1,22 @@
|
||||||
## 平台简介
|
## 平台简介
|
||||||
|
|
||||||
|
本项目FORK自 [若依/RuoYi](https://gitee.com/y_project/RuoYi)
|
||||||
|
|
||||||
|
花了点时间做了以下改动:
|
||||||
|
###### 更新springboot
|
||||||
|
更新springboot版本至2.1.16.RELEASE
|
||||||
|
|
||||||
|
###### 集成mybatis-plus
|
||||||
|
一直在项目中使用mybatis-plus,觉得这个方便好用,尽量保持原代码以方便从主干合并,
|
||||||
|
core包提供BaseCrudMapper、BaseService、BaseServiceImpl继承即可,并且在代码生成器中已更新
|
||||||
|
|
||||||
|
###### 添加lombok
|
||||||
|
为开发方便集成了lombok以提高开发效率
|
||||||
|
|
||||||
|
###### 控制台日志分等级彩色渲染和多环境修改
|
||||||
|
具体看logback-spring.xml和application.xml改动
|
||||||
|
|
||||||
|
|
||||||
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
|
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
|
||||||
|
|
||||||
性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依)
|
性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依)
|
||||||
|
|
@ -84,4 +101,4 @@
|
||||||
|
|
||||||
## 若依交流群
|
## 若依交流群
|
||||||
|
|
||||||
QQ群: [](https://jq.qq.com/?_wv=1027&k=5HBAaYN) [](https://jq.qq.com/?_wv=1027&k=5cHeRVW) [](https://jq.qq.com/?_wv=1027&k=53R0L5Z) [](https://jq.qq.com/?_wv=1027&k=5g75dCU) [](https://jq.qq.com/?_wv=1027&k=58cPoHA) [](https://jq.qq.com/?_wv=1027&k=5Ofd4Pb) [](https://jq.qq.com/?_wv=1027&k=5yugASz) [](https://jq.qq.com/?_wv=1027&k=5Rf3d2P) [](https://jq.qq.com/?_wv=1027&k=5ZIjaeP) [](https://jq.qq.com/?_wv=1027&k=5CJw1jY) [](https://jq.qq.com/?_wv=1027&k=5omzbKc) [](https://jq.qq.com/?_wv=1027&k=qPIKBb7s)
|
QQ群: [](https://jq.qq.com/?_wv=1027&k=5HBAaYN) [](https://jq.qq.com/?_wv=1027&k=5cHeRVW) [](https://jq.qq.com/?_wv=1027&k=53R0L5Z) [](https://jq.qq.com/?_wv=1027&k=5g75dCU) [](https://jq.qq.com/?_wv=1027&k=58cPoHA) [](https://jq.qq.com/?_wv=1027&k=5Ofd4Pb) [](https://jq.qq.com/?_wv=1027&k=5yugASz) [](https://jq.qq.com/?_wv=1027&k=5Rf3d2P) [](https://jq.qq.com/?_wv=1027&k=5ZIjaeP) [](https://jq.qq.com/?_wv=1027&k=5CJw1jY) [](https://jq.qq.com/?_wv=1027&k=5omzbKc) [](https://jq.qq.com/?_wv=1027&k=qPIKBb7s)
|
||||||
|
|
|
||||||
30
pom.xml
30
pom.xml
|
|
@ -10,7 +10,7 @@
|
||||||
<name>ruoyi</name>
|
<name>ruoyi</name>
|
||||||
<url>http://www.ruoyi.vip</url>
|
<url>http://www.ruoyi.vip</url>
|
||||||
<description>若依管理系统</description>
|
<description>若依管理系统</description>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<ruoyi.version>4.4.0</ruoyi.version>
|
<ruoyi.version>4.4.0</ruoyi.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
|
@ -19,11 +19,12 @@
|
||||||
<shiro.version>1.6.0</shiro.version>
|
<shiro.version>1.6.0</shiro.version>
|
||||||
<thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
|
<thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
|
||||||
<mybatis.boot.version>1.3.2</mybatis.boot.version>
|
<mybatis.boot.version>1.3.2</mybatis.boot.version>
|
||||||
<druid.version>1.1.22</druid.version>
|
<druid.version>1.1.23</druid.version>
|
||||||
<bitwalker.version>1.19</bitwalker.version>
|
<bitwalker.version>1.19</bitwalker.version>
|
||||||
<kaptcha.version>2.3.2</kaptcha.version>
|
<kaptcha.version>2.3.2</kaptcha.version>
|
||||||
<swagger.version>2.9.2</swagger.version>
|
<swagger.version>2.9.2</swagger.version>
|
||||||
<pagehelper.boot.version>1.2.5</pagehelper.boot.version>
|
<pagehelper.boot.version>1.3.0</pagehelper.boot.version>
|
||||||
|
<mybatis.plus.version>3.4.0</mybatis.plus.version>
|
||||||
<fastjson.version>1.2.73</fastjson.version>
|
<fastjson.version>1.2.73</fastjson.version>
|
||||||
<oshi.version>3.9.1</oshi.version>
|
<oshi.version>3.9.1</oshi.version>
|
||||||
<commons.io.version>2.5</commons.io.version>
|
<commons.io.version>2.5</commons.io.version>
|
||||||
|
|
@ -35,23 +36,23 @@
|
||||||
<!-- 依赖声明 -->
|
<!-- 依赖声明 -->
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!-- SpringBoot的依赖配置-->
|
<!-- SpringBoot的依赖配置-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-dependencies</artifactId>
|
<artifactId>spring-boot-dependencies</artifactId>
|
||||||
<version>2.1.1.RELEASE</version>
|
<version>2.1.16.RELEASE</version>
|
||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--阿里数据库连接池 -->
|
<!--阿里数据库连接池 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>druid-spring-boot-starter</artifactId>
|
<artifactId>druid-spring-boot-starter</artifactId>
|
||||||
<version>${druid.version}</version>
|
<version>${druid.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--验证码 -->
|
<!--验证码 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.penggle</groupId>
|
<groupId>com.github.penggle</groupId>
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
<artifactId>shiro-ehcache</artifactId>
|
<artifactId>shiro-ehcache</artifactId>
|
||||||
<version>${shiro.version}</version>
|
<version>${shiro.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- thymeleaf模板引擎和shiro框架的整合 -->
|
<!-- thymeleaf模板引擎和shiro框架的整合 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.theborakompanioni</groupId>
|
<groupId>com.github.theborakompanioni</groupId>
|
||||||
|
|
@ -101,6 +102,13 @@
|
||||||
<version>${pagehelper.boot.version}</version>
|
<version>${pagehelper.boot.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MyBatis Plus -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.baomidou</groupId>
|
||||||
|
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||||
|
<version>${mybatis.plus.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 获取系统信息 -->
|
<!-- 获取系统信息 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.oshi</groupId>
|
<groupId>com.github.oshi</groupId>
|
||||||
|
|
@ -131,7 +139,7 @@
|
||||||
<artifactId>springfox-swagger-ui</artifactId>
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
<version>${swagger.version}</version>
|
<version>${swagger.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--io常用工具类 -->
|
<!--io常用工具类 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-io</groupId>
|
<groupId>commons-io</groupId>
|
||||||
|
|
@ -166,7 +174,7 @@
|
||||||
<artifactId>fastjson</artifactId>
|
<artifactId>fastjson</artifactId>
|
||||||
<version>${fastjson.version}</version>
|
<version>${fastjson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 定时任务-->
|
<!-- 定时任务-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
|
|
@ -260,4 +268,4 @@
|
||||||
</pluginRepository>
|
</pluginRepository>
|
||||||
</pluginRepositories>
|
</pluginRepositories>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动程序
|
* 启动程序
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
||||||
|
|
@ -27,4 +27,4 @@ public class RuoYiApplication
|
||||||
" | | \\ / \\ / \n" +
|
" | | \\ / \\ / \n" +
|
||||||
" ''-' `'-' `-..-' ");
|
" ''-' `'-' `-..-' ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,57 +1,64 @@
|
||||||
# 数据源配置
|
server:
|
||||||
spring:
|
# 服务器的HTTP端口,默认为80
|
||||||
datasource:
|
port: 8081
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
servlet:
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
# 应用的访问路径
|
||||||
druid:
|
context-path: /
|
||||||
# 主库数据源
|
|
||||||
master:
|
# 数据源配置
|
||||||
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
spring:
|
||||||
username: root
|
datasource:
|
||||||
password: password
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
# 从库数据源
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
slave:
|
druid:
|
||||||
# 从数据源开关/默认关闭
|
# 主库数据源
|
||||||
enabled: false
|
master:
|
||||||
url:
|
url: jdbc:mysql://106.75.99.248:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
username:
|
username: ry
|
||||||
password:
|
password: hyWaxqSnANWgYRnmjABmdEk6SbMyCzma
|
||||||
# 初始连接数
|
# 从库数据源
|
||||||
initialSize: 5
|
slave:
|
||||||
# 最小连接池数量
|
# 从数据源开关/默认关闭
|
||||||
minIdle: 10
|
enabled: false
|
||||||
# 最大连接池数量
|
url:
|
||||||
maxActive: 20
|
username:
|
||||||
# 配置获取连接等待超时的时间
|
password:
|
||||||
maxWait: 60000
|
# 初始连接数
|
||||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
initialSize: 5
|
||||||
timeBetweenEvictionRunsMillis: 60000
|
# 最小连接池数量
|
||||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
minIdle: 10
|
||||||
minEvictableIdleTimeMillis: 300000
|
# 最大连接池数量
|
||||||
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
maxActive: 20
|
||||||
maxEvictableIdleTimeMillis: 900000
|
# 配置获取连接等待超时的时间
|
||||||
# 配置检测连接是否有效
|
maxWait: 60000
|
||||||
validationQuery: SELECT 1 FROM DUAL
|
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||||
testWhileIdle: true
|
timeBetweenEvictionRunsMillis: 60000
|
||||||
testOnBorrow: false
|
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||||
testOnReturn: false
|
minEvictableIdleTimeMillis: 300000
|
||||||
webStatFilter:
|
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
||||||
enabled: true
|
maxEvictableIdleTimeMillis: 900000
|
||||||
statViewServlet:
|
# 配置检测连接是否有效
|
||||||
enabled: true
|
validationQuery: SELECT 1 FROM DUAL
|
||||||
# 设置白名单,不填则允许所有访问
|
testWhileIdle: true
|
||||||
allow:
|
testOnBorrow: false
|
||||||
url-pattern: /druid/*
|
testOnReturn: false
|
||||||
# 控制台管理用户名和密码
|
webStatFilter:
|
||||||
login-username:
|
enabled: true
|
||||||
login-password:
|
statViewServlet:
|
||||||
filter:
|
enabled: true
|
||||||
stat:
|
# 设置白名单,不填则允许所有访问
|
||||||
enabled: true
|
allow:
|
||||||
# 慢SQL记录
|
url-pattern: /druid/*
|
||||||
log-slow-sql: true
|
# 控制台管理用户名和密码
|
||||||
slow-sql-millis: 1000
|
login-username:
|
||||||
merge-sql: true
|
login-password:
|
||||||
wall:
|
filter:
|
||||||
config:
|
stat:
|
||||||
multi-statement-allow: true
|
enabled: true
|
||||||
|
# 慢SQL记录
|
||||||
|
log-slow-sql: true
|
||||||
|
slow-sql-millis: 1000
|
||||||
|
merge-sql: true
|
||||||
|
wall:
|
||||||
|
config:
|
||||||
|
multi-statement-allow: true
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
server:
|
||||||
|
# 服务器的HTTP端口,默认为80
|
||||||
|
port: 8081
|
||||||
|
servlet:
|
||||||
|
# 应用的访问路径
|
||||||
|
context-path: /
|
||||||
|
|
||||||
|
# 数据源配置
|
||||||
|
spring:
|
||||||
|
datasource:
|
||||||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
|
druid:
|
||||||
|
# 主库数据源
|
||||||
|
master:
|
||||||
|
url: jdbc:mysql://106.75.99.248:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
|
username: ry
|
||||||
|
password: hyWaxqSnANWgYRnmjABmdEk6SbMyCzma
|
||||||
|
# 从库数据源
|
||||||
|
slave:
|
||||||
|
# 从数据源开关/默认关闭
|
||||||
|
enabled: false
|
||||||
|
url:
|
||||||
|
username:
|
||||||
|
password:
|
||||||
|
# 初始连接数
|
||||||
|
initialSize: 5
|
||||||
|
# 最小连接池数量
|
||||||
|
minIdle: 10
|
||||||
|
# 最大连接池数量
|
||||||
|
maxActive: 20
|
||||||
|
# 配置获取连接等待超时的时间
|
||||||
|
maxWait: 60000
|
||||||
|
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||||
|
timeBetweenEvictionRunsMillis: 60000
|
||||||
|
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||||
|
minEvictableIdleTimeMillis: 300000
|
||||||
|
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
||||||
|
maxEvictableIdleTimeMillis: 900000
|
||||||
|
# 配置检测连接是否有效
|
||||||
|
validationQuery: SELECT 1 FROM DUAL
|
||||||
|
testWhileIdle: true
|
||||||
|
testOnBorrow: false
|
||||||
|
testOnReturn: false
|
||||||
|
webStatFilter:
|
||||||
|
enabled: true
|
||||||
|
statViewServlet:
|
||||||
|
enabled: true
|
||||||
|
# 设置白名单,不填则允许所有访问
|
||||||
|
allow:
|
||||||
|
url-pattern: /druid/*
|
||||||
|
# 控制台管理用户名和密码
|
||||||
|
login-username:
|
||||||
|
login-password:
|
||||||
|
filter:
|
||||||
|
stat:
|
||||||
|
enabled: true
|
||||||
|
# 慢SQL记录
|
||||||
|
log-slow-sql: true
|
||||||
|
slow-sql-millis: 1000
|
||||||
|
merge-sql: true
|
||||||
|
wall:
|
||||||
|
config:
|
||||||
|
multi-statement-allow: true
|
||||||
|
|
@ -15,11 +15,6 @@ ruoyi:
|
||||||
|
|
||||||
# 开发环境配置
|
# 开发环境配置
|
||||||
server:
|
server:
|
||||||
# 服务器的HTTP端口,默认为80
|
|
||||||
port: 80
|
|
||||||
servlet:
|
|
||||||
# 应用的访问路径
|
|
||||||
context-path: /
|
|
||||||
tomcat:
|
tomcat:
|
||||||
# tomcat的URI编码
|
# tomcat的URI编码
|
||||||
uri-encoding: UTF-8
|
uri-encoding: UTF-8
|
||||||
|
|
@ -27,7 +22,8 @@ server:
|
||||||
max-threads: 800
|
max-threads: 800
|
||||||
# Tomcat启动初始化的线程数,默认值25
|
# Tomcat启动初始化的线程数,默认值25
|
||||||
min-spare-threads: 30
|
min-spare-threads: 30
|
||||||
|
connection-timeout: 5000
|
||||||
|
|
||||||
# 日志配置
|
# 日志配置
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
|
|
@ -55,8 +51,8 @@ spring:
|
||||||
jackson:
|
jackson:
|
||||||
time-zone: GMT+8
|
time-zone: GMT+8
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
profiles:
|
profiles:
|
||||||
active: druid
|
active: dev
|
||||||
# 文件上传
|
# 文件上传
|
||||||
servlet:
|
servlet:
|
||||||
multipart:
|
multipart:
|
||||||
|
|
@ -70,21 +66,41 @@ spring:
|
||||||
# 热部署开关
|
# 热部署开关
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
# MyBatis
|
# MyBatis Plus
|
||||||
mybatis:
|
mybatis-plus:
|
||||||
# 搜索指定包别名
|
# MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名 (即 XML 中调用的时候不用包含包名)
|
||||||
typeAliasesPackage: com.ruoyi.**.domain
|
type-aliases-package: com.ruoyi.**.domain
|
||||||
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
# MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法 (XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)
|
||||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
mapper-locations: classpath*:mapper/**/*.xml
|
||||||
# 加载全局的配置文件
|
# MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中
|
||||||
configLocation: classpath:mybatis/mybatis-config.xml
|
# config-location: classpath:mybatis/mybatis-config.xml
|
||||||
|
global-config:
|
||||||
|
db-config:
|
||||||
|
# 全局默认主键类型
|
||||||
|
id-type: auto
|
||||||
|
# 逻辑已删除值,默认为 1
|
||||||
|
logic-delete-value: -1
|
||||||
|
# 逻辑未删除值,默认为 0
|
||||||
|
logic-not-delete-value: 0
|
||||||
|
banner: false
|
||||||
|
configuration:
|
||||||
|
# 全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true
|
||||||
|
cache-enabled: false
|
||||||
|
# 允许 JDBC 支持自动生成主键,默认为 true
|
||||||
|
# use-generated-keys: true
|
||||||
|
# 配置默认的执行器
|
||||||
|
default-executor-type: reuse
|
||||||
|
# 指定所用日志的具体实现
|
||||||
|
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
|
||||||
|
call-setters-on-nulls: true
|
||||||
|
jdbc-type-for-null: 'null'
|
||||||
|
|
||||||
# PageHelper分页插件
|
# PageHelper分页插件
|
||||||
pagehelper:
|
pagehelper:
|
||||||
helperDialect: mysql
|
helperDialect: mysql
|
||||||
reasonable: true
|
reasonable: true
|
||||||
supportMethodsArguments: true
|
supportMethodsArguments: true
|
||||||
params: count=countSql
|
params: count=countSql
|
||||||
|
|
||||||
# Shiro
|
# Shiro
|
||||||
shiro:
|
shiro:
|
||||||
|
|
@ -101,7 +117,7 @@ shiro:
|
||||||
captchaType: math
|
captchaType: math
|
||||||
cookie:
|
cookie:
|
||||||
# 设置Cookie的域名 默认空,即当前访问的域名
|
# 设置Cookie的域名 默认空,即当前访问的域名
|
||||||
domain:
|
domain:
|
||||||
# 设置cookie的有效访问路径
|
# 设置cookie的有效访问路径
|
||||||
path: /
|
path: /
|
||||||
# 设置HttpOnly属性
|
# 设置HttpOnly属性
|
||||||
|
|
@ -123,7 +139,7 @@ shiro:
|
||||||
kickoutAfter: false
|
kickoutAfter: false
|
||||||
|
|
||||||
# 防止XSS攻击
|
# 防止XSS攻击
|
||||||
xss:
|
xss:
|
||||||
# 过滤开关
|
# 过滤开关
|
||||||
enabled: true
|
enabled: true
|
||||||
# 排除链接(多个用逗号分隔)
|
# 排除链接(多个用逗号分隔)
|
||||||
|
|
|
||||||
|
|
@ -1,93 +1,94 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<!-- 日志存放路径 -->
|
<!-- 日志存放路径 -->
|
||||||
<property name="log.path" value="/home/ruoyi/logs" />
|
<property name="log.path" value="logs" />
|
||||||
<!-- 日志输出格式 -->
|
<!-- 日志输出格式 -->
|
||||||
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
|
<property name="log.colorPattern" value="%d{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/>
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
|
||||||
<!-- 控制台输出 -->
|
|
||||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
<!-- 控制台输出 -->
|
||||||
<encoder>
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
<pattern>${log.pattern}</pattern>
|
<encoder>
|
||||||
</encoder>
|
<pattern>${log.colorPattern}</pattern>
|
||||||
</appender>
|
</encoder>
|
||||||
|
</appender>
|
||||||
<!-- 系统日志输出 -->
|
|
||||||
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<!-- 系统日志输出 -->
|
||||||
<file>${log.path}/sys-info.log</file>
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<!-- 循环政策:基于时间创建日志文件 -->
|
<file>${log.path}/sys-info.log</file>
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
<!-- 日志文件名格式 -->
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
<!-- 日志文件名格式 -->
|
||||||
<!-- 日志最大的历史 60天 -->
|
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
<maxHistory>60</maxHistory>
|
<!-- 日志最大的历史 60天 -->
|
||||||
</rollingPolicy>
|
<maxHistory>60</maxHistory>
|
||||||
<encoder>
|
</rollingPolicy>
|
||||||
<pattern>${log.pattern}</pattern>
|
<encoder>
|
||||||
</encoder>
|
<pattern>${log.pattern}</pattern>
|
||||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
</encoder>
|
||||||
<!-- 过滤的级别 -->
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
<level>INFO</level>
|
<!-- 过滤的级别 -->
|
||||||
<!-- 匹配时的操作:接收(记录) -->
|
<level>INFO</level>
|
||||||
<onMatch>ACCEPT</onMatch>
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
<!-- 不匹配时的操作:拒绝(不记录) -->
|
<onMatch>ACCEPT</onMatch>
|
||||||
<onMismatch>DENY</onMismatch>
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
</filter>
|
<onMismatch>DENY</onMismatch>
|
||||||
</appender>
|
</filter>
|
||||||
|
</appender>
|
||||||
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${log.path}/sys-error.log</file>
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<!-- 循环政策:基于时间创建日志文件 -->
|
<file>${log.path}/sys-error.log</file>
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
<!-- 日志文件名格式 -->
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
<!-- 日志文件名格式 -->
|
||||||
<!-- 日志最大的历史 60天 -->
|
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
<maxHistory>60</maxHistory>
|
<!-- 日志最大的历史 60天 -->
|
||||||
</rollingPolicy>
|
<maxHistory>60</maxHistory>
|
||||||
<encoder>
|
</rollingPolicy>
|
||||||
<pattern>${log.pattern}</pattern>
|
<encoder>
|
||||||
</encoder>
|
<pattern>${log.pattern}</pattern>
|
||||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
</encoder>
|
||||||
<!-- 过滤的级别 -->
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
<level>ERROR</level>
|
<!-- 过滤的级别 -->
|
||||||
<!-- 匹配时的操作:接收(记录) -->
|
<level>ERROR</level>
|
||||||
<onMatch>ACCEPT</onMatch>
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
<!-- 不匹配时的操作:拒绝(不记录) -->
|
<onMatch>ACCEPT</onMatch>
|
||||||
<onMismatch>DENY</onMismatch>
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
</filter>
|
<onMismatch>DENY</onMismatch>
|
||||||
</appender>
|
</filter>
|
||||||
|
</appender>
|
||||||
<!-- 用户访问日志输出 -->
|
|
||||||
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<!-- 用户访问日志输出 -->
|
||||||
<file>${log.path}/sys-user.log</file>
|
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<file>${log.path}/sys-user.log</file>
|
||||||
<!-- 按天回滚 daily -->
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
|
<!-- 按天回滚 daily -->
|
||||||
<!-- 日志最大的历史 60天 -->
|
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
<maxHistory>60</maxHistory>
|
<!-- 日志最大的历史 60天 -->
|
||||||
</rollingPolicy>
|
<maxHistory>60</maxHistory>
|
||||||
<encoder>
|
</rollingPolicy>
|
||||||
<pattern>${log.pattern}</pattern>
|
<encoder>
|
||||||
</encoder>
|
<pattern>${log.pattern}</pattern>
|
||||||
</appender>
|
</encoder>
|
||||||
|
</appender>
|
||||||
<!-- 系统模块日志级别控制 -->
|
|
||||||
<logger name="com.ruoyi" level="info" />
|
<!-- 系统模块日志级别控制 -->
|
||||||
<!-- Spring日志级别控制 -->
|
<logger name="com.ruoyi" level="info" />
|
||||||
<logger name="org.springframework" level="warn" />
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn" />
|
||||||
<root level="info">
|
|
||||||
<appender-ref ref="console" />
|
<root level="info">
|
||||||
</root>
|
<appender-ref ref="console" />
|
||||||
|
</root>
|
||||||
<!--系统操作日志-->
|
|
||||||
<root level="info">
|
<!--系统操作日志-->
|
||||||
<appender-ref ref="file_info" />
|
<root level="info">
|
||||||
<appender-ref ref="file_error" />
|
<appender-ref ref="file_info" />
|
||||||
</root>
|
<appender-ref ref="file_error" />
|
||||||
|
</root>
|
||||||
<!--系统用户操作日志-->
|
|
||||||
<logger name="sys-user" level="info">
|
<!--系统用户操作日志-->
|
||||||
<appender-ref ref="sys-user"/>
|
<logger name="sys-user" level="info">
|
||||||
</logger>
|
<appender-ref ref="sys-user"/>
|
||||||
</configuration>
|
</logger>
|
||||||
|
</configuration>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
<groupId>org.apache.shiro</groupId>
|
<groupId>org.apache.shiro</groupId>
|
||||||
<artifactId>shiro-core</artifactId>
|
<artifactId>shiro-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Shiro使用EhCache缓存框架 -->
|
<!-- Shiro使用EhCache缓存框架 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.shiro</groupId>
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
|
@ -47,6 +47,12 @@
|
||||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MyBatis Plus -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.baomidou</groupId>
|
||||||
|
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 自定义验证注解 -->
|
<!-- 自定义验证注解 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.validation</groupId>
|
<groupId>javax.validation</groupId>
|
||||||
|
|
@ -101,6 +107,11 @@
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,13 @@ import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entity基类
|
* Entity基类
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
public class BaseEntity implements Serializable
|
public class BaseEntity implements Serializable
|
||||||
|
|
@ -16,6 +18,7 @@ public class BaseEntity implements Serializable
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/** 搜索值 */
|
/** 搜索值 */
|
||||||
|
@TableField(exist = false)
|
||||||
private String searchValue;
|
private String searchValue;
|
||||||
|
|
||||||
/** 创建者 */
|
/** 创建者 */
|
||||||
|
|
@ -36,6 +39,7 @@ public class BaseEntity implements Serializable
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/** 请求参数 */
|
/** 请求参数 */
|
||||||
|
@TableField(exist = false)
|
||||||
private Map<String, Object> params;
|
private Map<String, Object> params;
|
||||||
|
|
||||||
public String getSearchValue()
|
public String getSearchValue()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
package com.ruoyi.common.core.domain;
|
package com.ruoyi.common.core.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tree基类
|
* Tree基类
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
public class TreeEntity extends BaseEntity
|
public class TreeEntity extends BaseEntity
|
||||||
|
|
@ -10,6 +12,7 @@ public class TreeEntity extends BaseEntity
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/** 父菜单名称 */
|
/** 父菜单名称 */
|
||||||
|
@TableField(exist = false)
|
||||||
private String parentName;
|
private String parentName;
|
||||||
|
|
||||||
/** 父菜单ID */
|
/** 父菜单ID */
|
||||||
|
|
@ -60,4 +63,4 @@ public class TreeEntity extends BaseEntity
|
||||||
{
|
{
|
||||||
this.ancestors = ancestors;
|
this.ancestors = ancestors;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.ruoyi.common.core.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础CRUD的父类Mapper
|
||||||
|
*
|
||||||
|
* @author liuxing
|
||||||
|
*/
|
||||||
|
public interface BaseCrudMapper<T> extends BaseMapper<T> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.ruoyi.common.core.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础服务Service
|
||||||
|
*
|
||||||
|
* @author liuxing
|
||||||
|
*/
|
||||||
|
public interface BaseService<T> extends IService<T> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.ruoyi.common.core.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.ruoyi.common.core.mapper.BaseCrudMapper;
|
||||||
|
import com.ruoyi.common.core.service.BaseService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author liuxing
|
||||||
|
*/
|
||||||
|
public class BaseServiceImpl<M extends BaseCrudMapper<T>, T> extends ServiceImpl<M, T> implements BaseService<T> {
|
||||||
|
}
|
||||||
|
|
@ -89,4 +89,4 @@
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
package com.ruoyi.framework.config;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import org.apache.ibatis.io.VFS;
|
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
|
||||||
import org.mybatis.spring.SqlSessionFactoryBean;
|
|
||||||
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
import org.springframework.core.io.DefaultResourceLoader;
|
|
||||||
import org.springframework.core.io.Resource;
|
|
||||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
|
||||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
|
||||||
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
|
|
||||||
import org.springframework.core.type.classreading.MetadataReader;
|
|
||||||
import org.springframework.core.type.classreading.MetadataReaderFactory;
|
|
||||||
import org.springframework.util.ClassUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Mybatis支持*匹配扫描包
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class MyBatisConfig
|
|
||||||
{
|
|
||||||
@Autowired
|
|
||||||
private Environment env;
|
|
||||||
|
|
||||||
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
|
|
||||||
|
|
||||||
public static String setTypeAliasesPackage(String typeAliasesPackage)
|
|
||||||
{
|
|
||||||
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
|
|
||||||
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
|
|
||||||
List<String> allResult = new ArrayList<String>();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
for (String aliasesPackage : typeAliasesPackage.split(","))
|
|
||||||
{
|
|
||||||
List<String> result = new ArrayList<String>();
|
|
||||||
aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
|
|
||||||
+ ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
|
|
||||||
Resource[] resources = resolver.getResources(aliasesPackage);
|
|
||||||
if (resources != null && resources.length > 0)
|
|
||||||
{
|
|
||||||
MetadataReader metadataReader = null;
|
|
||||||
for (Resource resource : resources)
|
|
||||||
{
|
|
||||||
if (resource.isReadable())
|
|
||||||
{
|
|
||||||
metadataReader = metadataReaderFactory.getMetadataReader(resource);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
|
|
||||||
}
|
|
||||||
catch (ClassNotFoundException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result.size() > 0)
|
|
||||||
{
|
|
||||||
HashSet<String> hashResult = new HashSet<String>(result);
|
|
||||||
allResult.addAll(hashResult);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (allResult.size() > 0)
|
|
||||||
{
|
|
||||||
typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return typeAliasesPackage;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
|
|
||||||
{
|
|
||||||
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
|
|
||||||
String mapperLocations = env.getProperty("mybatis.mapperLocations");
|
|
||||||
String configLocation = env.getProperty("mybatis.configLocation");
|
|
||||||
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
|
|
||||||
VFS.addImplClass(SpringBootVFS.class);
|
|
||||||
|
|
||||||
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
|
|
||||||
sessionFactory.setDataSource(dataSource);
|
|
||||||
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
|
|
||||||
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
|
|
||||||
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
|
|
||||||
return sessionFactory.getObject();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.ruoyi.framework.config;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
|
||||||
|
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mybatis-plus配置
|
||||||
|
*
|
||||||
|
* @author Mark sunlightcs@gmail.com
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class MybatisPlusConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ISqlInjector sqlInjector() {
|
||||||
|
return new DefaultSqlInjector();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,10 @@ package ${packageName}.domain;
|
||||||
#foreach ($import in $importList)
|
#foreach ($import in $importList)
|
||||||
import ${import};
|
import ${import};
|
||||||
#end
|
#end
|
||||||
|
import lombok.Data;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.annotation.Excel;
|
||||||
|
|
@ -14,7 +18,7 @@ import com.ruoyi.common.core.domain.TreeEntity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ${functionName}对象 ${tableName}
|
* ${functionName}对象 ${tableName}
|
||||||
*
|
*
|
||||||
* @author ${author}
|
* @author ${author}
|
||||||
* @date ${datetime}
|
* @date ${datetime}
|
||||||
*/
|
*/
|
||||||
|
|
@ -23,6 +27,8 @@ import com.ruoyi.common.core.domain.TreeEntity;
|
||||||
#elseif($table.tree)
|
#elseif($table.tree)
|
||||||
#set($Entity="TreeEntity")
|
#set($Entity="TreeEntity")
|
||||||
#end
|
#end
|
||||||
|
@Data
|
||||||
|
@TableName("${tableName}")
|
||||||
public class ${ClassName} extends ${Entity}
|
public class ${ClassName} extends ${Entity}
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
@ -44,6 +50,9 @@ public class ${ClassName} extends ${Entity}
|
||||||
#else
|
#else
|
||||||
@Excel(name = "${comment}")
|
@Excel(name = "${comment}")
|
||||||
#end
|
#end
|
||||||
|
#end
|
||||||
|
#if($column.pk)
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
#end
|
#end
|
||||||
private $column.javaType $column.javaField;
|
private $column.javaType $column.javaField;
|
||||||
|
|
||||||
|
|
@ -54,51 +63,51 @@ public class ${ClassName} extends ${Entity}
|
||||||
private List<${subClassName}> ${subclassName}List;
|
private List<${subClassName}> ${subclassName}List;
|
||||||
|
|
||||||
#end
|
#end
|
||||||
#foreach ($column in $columns)
|
###foreach ($column in $columns)
|
||||||
#if(!$table.isSuperColumn($column.javaField))
|
###if(!$table.isSuperColumn($column.javaField))
|
||||||
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
###if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
||||||
#set($AttrName=$column.javaField)
|
###set($AttrName=$column.javaField)
|
||||||
#else
|
###else
|
||||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
###set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||||
#end
|
###end
|
||||||
public void set${AttrName}($column.javaType $column.javaField)
|
## public void set${AttrName}($column.javaType $column.javaField)
|
||||||
{
|
## {
|
||||||
this.$column.javaField = $column.javaField;
|
## this.$column.javaField = $column.javaField;
|
||||||
}
|
## }
|
||||||
|
##
|
||||||
public $column.javaType get${AttrName}()
|
## public $column.javaType get${AttrName}()
|
||||||
{
|
## {
|
||||||
return $column.javaField;
|
## return $column.javaField;
|
||||||
}
|
## }
|
||||||
#end
|
###end
|
||||||
#end
|
###end
|
||||||
|
##
|
||||||
#if($table.sub)
|
###if($table.sub)
|
||||||
public List<${subClassName}> get${subClassName}List()
|
## public List<${subClassName}> get${subClassName}List()
|
||||||
{
|
## {
|
||||||
return ${subclassName}List;
|
## return ${subclassName}List;
|
||||||
}
|
## }
|
||||||
|
##
|
||||||
public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
|
## public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
|
||||||
{
|
## {
|
||||||
this.${subclassName}List = ${subclassName}List;
|
## this.${subclassName}List = ${subclassName}List;
|
||||||
}
|
## }
|
||||||
|
##
|
||||||
#end
|
###end
|
||||||
@Override
|
## @Override
|
||||||
public String toString() {
|
## public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
## return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
#foreach ($column in $columns)
|
###foreach ($column in $columns)
|
||||||
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
###if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
||||||
#set($AttrName=$column.javaField)
|
###set($AttrName=$column.javaField)
|
||||||
#else
|
###else
|
||||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
###set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||||
#end
|
###end
|
||||||
.append("${column.javaField}", get${AttrName}())
|
## .append("${column.javaField}", get${AttrName}())
|
||||||
#end
|
###end
|
||||||
#if($table.sub)
|
###if($table.sub)
|
||||||
.append("${subclassName}List", get${subClassName}List())
|
## .append("${subclassName}List", get${subClassName}List())
|
||||||
#end
|
###end
|
||||||
.toString();
|
## .toString();
|
||||||
}
|
## }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,87 +5,87 @@ import ${packageName}.domain.${ClassName};
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
import ${packageName}.domain.${subClassName};
|
import ${packageName}.domain.${subClassName};
|
||||||
#end
|
#end
|
||||||
|
import com.ruoyi.common.core.mapper.BaseCrudMapper;
|
||||||
/**
|
/**
|
||||||
* ${functionName}Mapper接口
|
* ${functionName}Mapper接口
|
||||||
*
|
*
|
||||||
* @author ${author}
|
* @author ${author}
|
||||||
* @date ${datetime}
|
* @date ${datetime}
|
||||||
*/
|
*/
|
||||||
public interface ${ClassName}Mapper
|
public interface ${ClassName}Mapper extends BaseCrudMapper<${ClassName}>
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}
|
* 查询${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}列表
|
* 查询${functionName}列表
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return ${functionName}集合
|
* @return ${functionName}集合
|
||||||
*/
|
*/
|
||||||
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
|
List<${ClassName}> select${ClassName}List(${ClassName} ${className});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增${functionName}
|
* 新增${functionName}
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int insert${ClassName}(${ClassName} ${className});
|
int insert${ClassName}(${ClassName} ${className});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改${functionName}
|
* 修改${functionName}
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int update${ClassName}(${ClassName} ${className});
|
int update${ClassName}(${ClassName} ${className});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}
|
* 删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除${functionName}
|
* 批量删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField}s 需要删除的数据ID
|
* @param ${pkColumn.javaField}s 需要删除的数据ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ByIds(String[] ${pkColumn.javaField}s);
|
int delete${ClassName}ByIds(String[] ${pkColumn.javaField}s);
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除${subTable.functionName}
|
* 批量删除${subTable.functionName}
|
||||||
*
|
*
|
||||||
* @param customerIds 需要删除的数据ID
|
* @param customerIds 需要删除的数据ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${subClassName}By${subTableFkClassName}s(String[] ${pkColumn.javaField}s);
|
int delete${subClassName}By${subTableFkClassName}s(String[] ${pkColumn.javaField}s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量新增${subTable.functionName}
|
* 批量新增${subTable.functionName}
|
||||||
*
|
*
|
||||||
* @param ${subclassName}List ${subTable.functionName}列表
|
* @param ${subclassName}List ${subTable.functionName}列表
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
|
int batch${subClassName}(List<${subClassName}> ${subclassName}List);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过${functionName}ID删除${subTable.functionName}信息
|
* 通过${functionName}ID删除${subTable.functionName}信息
|
||||||
*
|
*
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
|
int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,69 +5,69 @@ import ${packageName}.domain.${ClassName};
|
||||||
#if($table.tree)
|
#if($table.tree)
|
||||||
import com.ruoyi.common.core.domain.Ztree;
|
import com.ruoyi.common.core.domain.Ztree;
|
||||||
#end
|
#end
|
||||||
|
import com.ruoyi.common.core.service.BaseService;
|
||||||
/**
|
/**
|
||||||
* ${functionName}Service接口
|
* ${functionName}Service接口
|
||||||
*
|
*
|
||||||
* @author ${author}
|
* @author ${author}
|
||||||
* @date ${datetime}
|
* @date ${datetime}
|
||||||
*/
|
*/
|
||||||
public interface I${ClassName}Service
|
public interface I${ClassName}Service extends BaseService<${ClassName}>
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}
|
* 查询${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}列表
|
* 查询${functionName}列表
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return ${functionName}集合
|
* @return ${functionName}集合
|
||||||
*/
|
*/
|
||||||
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
|
List<${ClassName}> select${ClassName}List(${ClassName} ${className});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增${functionName}
|
* 新增${functionName}
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int insert${ClassName}(${ClassName} ${className});
|
int insert${ClassName}(${ClassName} ${className});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改${functionName}
|
* 修改${functionName}
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int update${ClassName}(${ClassName} ${className});
|
int update${ClassName}(${ClassName} ${className});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除${functionName}
|
* 批量删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ids 需要删除的数据ID
|
* @param ids 需要删除的数据ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ByIds(String ids);
|
int delete${ClassName}ByIds(String ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}信息
|
* 删除${functionName}信息
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
#if($table.tree)
|
#if($table.tree)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}树列表
|
* 查询${functionName}树列表
|
||||||
*
|
*
|
||||||
* @return 所有${functionName}信息
|
* @return 所有${functionName}信息
|
||||||
*/
|
*/
|
||||||
public List<Ztree> select${ClassName}Tree();
|
List<Ztree> select${ClassName}Tree();
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.Ztree;
|
||||||
#end
|
#end
|
||||||
#foreach ($column in $columns)
|
#foreach ($column in $columns)
|
||||||
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
|
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
|
||||||
|
import com.ruoyi.common.core.service.impl.BaseServiceImpl;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
#break
|
#break
|
||||||
#end
|
#end
|
||||||
|
|
@ -26,43 +27,41 @@ import com.ruoyi.common.core.text.Convert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ${functionName}Service业务层处理
|
* ${functionName}Service业务层处理
|
||||||
*
|
*
|
||||||
* @author ${author}
|
* @author ${author}
|
||||||
* @date ${datetime}
|
* @date ${datetime}
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service
|
||||||
{
|
{
|
||||||
@Autowired
|
|
||||||
private ${ClassName}Mapper ${className}Mapper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}
|
* 查询${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
|
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
|
||||||
{
|
{
|
||||||
return ${className}Mapper.select${ClassName}ById(${pkColumn.javaField});
|
return this.baseMapper.select${ClassName}ById(${pkColumn.javaField});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}列表
|
* 查询${functionName}列表
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
|
public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
|
||||||
{
|
{
|
||||||
return ${className}Mapper.select${ClassName}List(${className});
|
return this.baseMapper.select${ClassName}List(${className});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增${functionName}
|
* 新增${functionName}
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
|
@ -78,17 +77,17 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
int rows = ${className}Mapper.insert${ClassName}(${className});
|
int rows = this.baseMapper.insert${ClassName}(${className});
|
||||||
insert${subClassName}(${className});
|
insert${subClassName}(${className});
|
||||||
return rows;
|
return rows;
|
||||||
#else
|
#else
|
||||||
return ${className}Mapper.insert${ClassName}(${className});
|
return this.baseMapper.insert${ClassName}(${className});
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改${functionName}
|
* 修改${functionName}
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
|
@ -104,15 +103,15 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
|
this.baseMapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
|
||||||
insert${subClassName}(${className});
|
insert${subClassName}(${className});
|
||||||
#end
|
#end
|
||||||
return ${className}Mapper.update${ClassName}(${className});
|
return this.baseMapper.update${ClassName}(${className});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}对象
|
* 删除${functionName}对象
|
||||||
*
|
*
|
||||||
* @param ids 需要删除的数据ID
|
* @param ids 需要删除的数据ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
|
@ -123,14 +122,14 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
public int delete${ClassName}ByIds(String ids)
|
public int delete${ClassName}ByIds(String ids)
|
||||||
{
|
{
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(Convert.toStrArray(ids));
|
this.baseMapper.delete${subClassName}By${subTableFkClassName}s(Convert.toStrArray(ids));
|
||||||
#end
|
#end
|
||||||
return ${className}Mapper.delete${ClassName}ByIds(Convert.toStrArray(ids));
|
return this.baseMapper.delete${ClassName}ByIds(Convert.toStrArray(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}信息
|
* 删除${functionName}信息
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
|
@ -138,21 +137,21 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
|
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
|
||||||
{
|
{
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
|
this.baseMapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
|
||||||
#end
|
#end
|
||||||
return ${className}Mapper.delete${ClassName}ById(${pkColumn.javaField});
|
return this.baseMapper.delete${ClassName}ById(${pkColumn.javaField});
|
||||||
}
|
}
|
||||||
#if($table.tree)
|
#if($table.tree)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}树列表
|
* 查询${functionName}树列表
|
||||||
*
|
*
|
||||||
* @return 所有${functionName}信息
|
* @return 所有${functionName}信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<Ztree> select${ClassName}Tree()
|
public List<Ztree> select${ClassName}Tree()
|
||||||
{
|
{
|
||||||
List<${ClassName}> ${className}List = ${className}Mapper.select${ClassName}List(new ${ClassName}());
|
List<${ClassName}> ${className}List = this.baseMapper.select${ClassName}List(new ${ClassName}());
|
||||||
List<Ztree> ztrees = new ArrayList<Ztree>();
|
List<Ztree> ztrees = new ArrayList<Ztree>();
|
||||||
for (${ClassName} ${className} : ${className}List)
|
for (${ClassName} ${className} : ${className}List)
|
||||||
{
|
{
|
||||||
|
|
@ -173,7 +172,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增${subTable.functionName}信息
|
* 新增${subTable.functionName}信息
|
||||||
*
|
*
|
||||||
* @param ${className} ${functionName}对象
|
* @param ${className} ${functionName}对象
|
||||||
*/
|
*/
|
||||||
public void insert${subClassName}(${ClassName} ${className})
|
public void insert${subClassName}(${ClassName} ${className})
|
||||||
|
|
@ -190,7 +189,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
}
|
}
|
||||||
if (list.size() > 0)
|
if (list.size() > 0)
|
||||||
{
|
{
|
||||||
${className}Mapper.batch${subClassName}(list);
|
this.baseMapper.batch${subClassName}(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,15 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.annotation.Excel;
|
||||||
import com.ruoyi.common.core.domain.BaseEntity;
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ${subTable.functionName}对象 ${subTableName}
|
* ${subTable.functionName}对象 ${subTableName}
|
||||||
*
|
*
|
||||||
* @author ${author}
|
* @author ${author}
|
||||||
* @date ${datetime}
|
* @date ${datetime}
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
public class ${subClassName} extends BaseEntity
|
public class ${subClassName} extends BaseEntity
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
@ -40,36 +42,36 @@ public class ${subClassName} extends BaseEntity
|
||||||
|
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#foreach ($column in $subTable.columns)
|
###foreach ($column in $subTable.columns)
|
||||||
#if(!$table.isSuperColumn($column.javaField))
|
###if(!$table.isSuperColumn($column.javaField))
|
||||||
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
###if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
||||||
#set($AttrName=$column.javaField)
|
###set($AttrName=$column.javaField)
|
||||||
#else
|
###else
|
||||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
###set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||||
#end
|
###end
|
||||||
public void set${AttrName}($column.javaType $column.javaField)
|
## public void set${AttrName}($column.javaType $column.javaField)
|
||||||
{
|
## {
|
||||||
this.$column.javaField = $column.javaField;
|
## this.$column.javaField = $column.javaField;
|
||||||
}
|
## }
|
||||||
|
##
|
||||||
|
## public $column.javaType get${AttrName}()
|
||||||
|
## {
|
||||||
|
## return $column.javaField;
|
||||||
|
## }
|
||||||
|
###end
|
||||||
|
###end
|
||||||
|
|
||||||
public $column.javaType get${AttrName}()
|
## @Override
|
||||||
{
|
## public String toString() {
|
||||||
return $column.javaField;
|
## return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
}
|
###foreach ($column in $subTable.columns)
|
||||||
#end
|
###if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
||||||
#end
|
###set($AttrName=$column.javaField)
|
||||||
|
###else
|
||||||
@Override
|
###set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||||
public String toString() {
|
###end
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
## .append("${column.javaField}", get${AttrName}())
|
||||||
#foreach ($column in $subTable.columns)
|
###end
|
||||||
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
|
## .toString();
|
||||||
#set($AttrName=$column.javaField)
|
## }
|
||||||
#else
|
|
||||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
|
||||||
#end
|
|
||||||
.append("${column.javaField}", get${AttrName}())
|
|
||||||
#end
|
|
||||||
.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue