更新springboot版本至2.1.16.RELEASE,集成mybatis-plus,添加lombok,多环境修改

This commit is contained in:
liuxing 2020-09-17 12:06:50 +08:00
parent acfb6a56bb
commit 241e5188c6
21 changed files with 529 additions and 442 deletions

View File

@ -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应用程序如网站管理后台网站会员中心CMSCRMOA。所有前端后台代码封装过后十分精简易上手出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 一直想做一款后台管理系统看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序如网站管理后台网站会员中心CMSCRMOA。所有前端后台代码封装过后十分精简易上手出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依) 性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依)

14
pom.xml
View File

@ -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>
@ -40,7 +41,7 @@
<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>
@ -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>

View File

@ -1,3 +1,10 @@
server:
# 服务器的HTTP端口默认为80
port: 8081
servlet:
# 应用的访问路径
context-path: /
# 数据源配置 # 数据源配置
spring: spring:
datasource: datasource:
@ -6,9 +13,9 @@ spring:
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://106.75.99.248:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: ry
password: password password: hyWaxqSnANWgYRnmjABmdEk6SbMyCzma
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭

View File

@ -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

View File

@ -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,6 +22,7 @@ server:
max-threads: 800 max-threads: 800
# Tomcat启动初始化的线程数默认值25 # Tomcat启动初始化的线程数默认值25
min-spare-threads: 30 min-spare-threads: 30
connection-timeout: 5000
# 日志配置 # 日志配置
logging: logging:
@ -56,7 +52,7 @@ spring:
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,14 +66,34 @@ 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:

View File

@ -1,14 +1,15 @@
<?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.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" /> <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"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
<pattern>${log.pattern}</pattern> <pattern>${log.colorPattern}</pattern>
</encoder> </encoder>
</appender> </appender>

View File

@ -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>

View File

@ -4,6 +4,8 @@ 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;
/** /**
@ -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()

View File

@ -1,5 +1,7 @@
package com.ruoyi.common.core.domain; package com.ruoyi.common.core.domain;
import com.baomidou.mybatisplus.annotation.TableField;
/** /**
* Tree基类 * Tree基类
* *
@ -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 */

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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;
@ -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();
} ## }
} }

View File

@ -5,14 +5,14 @@ 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}
@ -20,7 +20,7 @@ public interface ${ClassName}Mapper
* @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}列表
@ -28,7 +28,7 @@ public interface ${ClassName}Mapper
* @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}
@ -36,7 +36,7 @@ public interface ${ClassName}Mapper
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int insert${ClassName}(${ClassName} ${className}); int insert${ClassName}(${ClassName} ${className});
/** /**
* 修改${functionName} * 修改${functionName}
@ -44,7 +44,7 @@ public interface ${ClassName}Mapper
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int update${ClassName}(${ClassName} ${className}); int update${ClassName}(${ClassName} ${className});
/** /**
* 删除${functionName} * 删除${functionName}
@ -52,7 +52,7 @@ public interface ${ClassName}Mapper
* @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}
@ -60,7 +60,7 @@ public interface ${ClassName}Mapper
* @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)
/** /**
@ -69,7 +69,7 @@ public interface ${ClassName}Mapper
* @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}
@ -77,7 +77,7 @@ public interface ${ClassName}Mapper
* @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);
/** /**
@ -86,6 +86,6 @@ public interface ${ClassName}Mapper
* @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
} }

View File

@ -5,14 +5,14 @@ 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}
@ -20,7 +20,7 @@ public interface I${ClassName}Service
* @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}列表
@ -28,7 +28,7 @@ public interface I${ClassName}Service
* @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}
@ -36,7 +36,7 @@ public interface I${ClassName}Service
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int insert${ClassName}(${ClassName} ${className}); int insert${ClassName}(${ClassName} ${className});
/** /**
* 修改${functionName} * 修改${functionName}
@ -44,7 +44,7 @@ public interface I${ClassName}Service
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int update${ClassName}(${ClassName} ${className}); int update${ClassName}(${ClassName} ${className});
/** /**
* 批量删除${functionName} * 批量删除${functionName}
@ -52,7 +52,7 @@ public interface I${ClassName}Service
* @param ids 需要删除的数据ID * @param ids 需要删除的数据ID
* @return 结果 * @return 结果
*/ */
public int delete${ClassName}ByIds(String ids); int delete${ClassName}ByIds(String ids);
/** /**
* 删除${functionName}信息 * 删除${functionName}信息
@ -60,7 +60,7 @@ public interface I${ClassName}Service
* @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)
/** /**
@ -68,6 +68,6 @@ public interface I${ClassName}Service
* *
* @return 所有${functionName}信息 * @return 所有${functionName}信息
*/ */
public List<Ztree> select${ClassName}Tree(); List<Ztree> select${ClassName}Tree();
#end #end
} }

View File

@ -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
@ -31,10 +32,8 @@ import com.ruoyi.common.core.text.Convert;
* @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}
@ -45,7 +44,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
@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});
} }
/** /**
@ -57,7 +56,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
@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});
} }
/** /**
@ -78,11 +77,11 @@ 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
} }
@ -104,10 +103,10 @@ 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});
} }
/** /**
@ -123,9 +122,9 @@ 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));
} }
/** /**
@ -138,9 +137,9 @@ 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)
@ -152,7 +151,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
@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)
{ {
@ -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);
} }
} }
} }

View File

@ -7,6 +7,7 @@ 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}
@ -14,6 +15,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @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();
}
} }