Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来开源组织
youlai-boot
提交
4b4bee4c
Y
youlai-boot
项目概览
有来开源组织
/
youlai-boot
通知
41
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-boot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4b4bee4c
编写于
4月 10, 2024
作者:
H
haoxr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 项目集成`mybatis-plus-generator` 代码生成器
Closes
https://gitee.com/youlaiorg/youlai-boot/issues/I80MH1
上级
58d30d56
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
1126 addition
and
2 deletion
+1126
-2
pom.xml
pom.xml
+17
-2
src/test/java/com/youlai/system/generator/FastAutoGeneratorTest.java
...va/com/youlai/system/generator/FastAutoGeneratorTest.java
+82
-0
src/test/resources/templates/bo.java.vm
src/test/resources/templates/bo.java.vm
+143
-0
src/test/resources/templates/controller.java.vm
src/test/resources/templates/controller.java.vm
+36
-0
src/test/resources/templates/converter.java.vm
src/test/resources/templates/converter.java.vm
+29
-0
src/test/resources/templates/dto.java.vm
src/test/resources/templates/dto.java.vm
+133
-0
src/test/resources/templates/entity.java.vm
src/test/resources/templates/entity.java.vm
+143
-0
src/test/resources/templates/form.java.vm
src/test/resources/templates/form.java.vm
+133
-0
src/test/resources/templates/mapper.java.vm
src/test/resources/templates/mapper.java.vm
+31
-0
src/test/resources/templates/mapper.xml.vm
src/test/resources/templates/mapper.xml.vm
+65
-0
src/test/resources/templates/pageQuery.java.vm
src/test/resources/templates/pageQuery.java.vm
+21
-0
src/test/resources/templates/service.java.vm
src/test/resources/templates/service.java.vm
+58
-0
src/test/resources/templates/serviceImpl.java.vm
src/test/resources/templates/serviceImpl.java.vm
+102
-0
src/test/resources/templates/vo.java.vm
src/test/resources/templates/vo.java.vm
+133
-0
未找到文件。
pom.xml
浏览文件 @
4b4bee4c
...
...
@@ -6,13 +6,13 @@
<groupId>
com.youlai
</groupId>
<artifactId>
youlai-boot
</artifactId>
<version>
2.
6.2
</version>
<version>
2.
7.0
</version>
<description>
基于 Java 17 + SpringBoot 3 + Spring Security 构建的权限管理系统。
</description>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
3.2.
3
</version>
<!-- lookup parent from repository -->
<version>
3.2.
4
</version>
<!-- lookup parent from repository -->
<relativePath/>
</parent>
...
...
@@ -43,6 +43,10 @@
<!-- redisson 分布式锁 -->
<redisson.version>
3.24.3
</redisson.version>
<!-- 自动代码生成 -->
<mybatis-plus-generator.version>
3.5.6
</mybatis-plus-generator.version>
<velocity.version>
2.3
</velocity.version>
</properties>
<dependencies>
...
...
@@ -182,6 +186,17 @@
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-generator
</artifactId>
<version>
${mybatis-plus-generator.version}
</version>
</dependency>
<dependency>
<groupId>
org.apache.velocity
</groupId>
<artifactId>
velocity-engine-core
</artifactId>
<version>
${velocity.version}
</version>
</dependency>
</dependencies>
<build>
...
...
src/test/java/com/youlai/system/generator/FastAutoGeneratorTest.java
0 → 100644
浏览文件 @
4b4bee4c
package
com.youlai.system.generator
;
import
com.baomidou.mybatisplus.generator.FastAutoGenerator
;
import
com.baomidou.mybatisplus.generator.config.DataSourceConfig
;
import
com.baomidou.mybatisplus.generator.config.OutputFile
;
import
com.baomidou.mybatisplus.generator.config.builder.CustomFile
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
/**
* 代码交互式生成
* <p>
* 代码生成、MySQL表生成代码、自动代码生成
*
* @author Ray Hao
* @see <a href="https://baomidou.com/pages/981406/">代码生成器配置新</a>
* @since 2024/4/9
*/
public
class
FastAutoGeneratorTest
{
private
static
final
DataSourceConfig
.
Builder
DATA_SOURCE_CONFIG
=
new
DataSourceConfig
.
Builder
(
"jdbc:mysql://localhost:3306/youlai_boot?serverTimezone=Asia/Shanghai"
,
"root"
,
"123456"
);
/**
* 执行 run
*/
public
static
void
main
(
String
[]
args
)
{
FastAutoGenerator
.
create
(
DATA_SOURCE_CONFIG
)
// 全局配置
.
globalConfig
((
scanner
,
builder
)
->
{
builder
.
outputDir
(
System
.
getProperty
(
"user.dir"
)
+
"/src/main/java"
)
.
author
(
"Ray Hao"
)
// 设置作者
;
})
// 包配置
.
packageConfig
(
builder
->
builder
.
parent
(
"com.youlai.system"
)
.
entity
(
"model.entity"
)
.
mapper
(
"mapper"
)
.
service
(
"service"
)
.
serviceImpl
(
"service.impl"
)
.
controller
(
"controller"
)
.
pathInfo
(
Collections
.
singletonMap
(
OutputFile
.
xml
,
System
.
getProperty
(
"user.dir"
)
+
"/src/main/resources/mapper"
))
)
// 注入配置(设置扩展类的模板路径和包路径)
.
injectionConfig
(
consumer
->
{
List
<
CustomFile
>
customFiles
=
new
ArrayList
<>();
customFiles
.
add
(
new
CustomFile
.
Builder
().
fileName
(
"DTO.java"
).
templatePath
(
"/templates/dto.java.vm"
).
packageName
(
"model.dto"
).
build
());
customFiles
.
add
(
new
CustomFile
.
Builder
().
fileName
(
"VO.java"
).
templatePath
(
"/templates/vo.java.vm"
).
packageName
(
"model.vo"
).
build
());
customFiles
.
add
(
new
CustomFile
.
Builder
().
fileName
(
"BO.java"
).
templatePath
(
"/templates/bo.java.vm"
).
packageName
(
"model.bo"
).
build
());
customFiles
.
add
(
new
CustomFile
.
Builder
().
fileName
(
"PageQuery.java"
).
templatePath
(
"/templates/pageQuery.java.vm"
).
packageName
(
"model.query"
).
build
());
customFiles
.
add
(
new
CustomFile
.
Builder
().
fileName
(
"Form.java"
).
templatePath
(
"/templates/form.java.vm"
).
packageName
(
"model.form"
).
build
());
customFiles
.
add
(
new
CustomFile
.
Builder
().
fileName
(
"Converter.java"
).
templatePath
(
"/templates/converter.java.vm"
).
packageName
(
"converter"
).
build
());
consumer
.
customFile
(
customFiles
);
})
// 策略配置
.
strategyConfig
((
scanner
,
builder
)
->
{
builder
.
entityBuilder
()
.
enableLombok
()
// 是否使用lombok
//.enableFileOverride() // 是否覆盖文件
.
logicDeleteColumnName
(
"deleted"
)
// 逻辑删除字段名
;
builder
.
mapperBuilder
()
.
enableBaseColumnList
()
.
enableBaseResultMap
()
;
builder
.
addTablePrefix
(
"sys_"
)
// 过滤移除表前缀 sys_user 表生成的实体类 User.java
.
addInclude
(
scanner
.
apply
(
"请输入表名,多个表名用,隔开"
));
}
)
.
execute
()
;
}
}
src/test/resources/templates/bo.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
.
Entity
}
;
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
}
;
#
end
#
if
(${
entityLombokModel
})
import lombok.Getter;
import lombok.Setter;
#
if
(${
chainModel
})
import lombok.experimental.Accessors;
#
end
#
end
/**
*
$
!
{
table.comment}
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
entityLombokModel
})
@Getter
@Setter
#
if
(${
chainModel
})
@Accessors(chain = true)
#
end
#
end
#
if
(${
table
.
convert
})
@TableName("
${
schemaName
}${
table
.
name
}
")
#
end
#
if
(${
superEntityClass
})
public class
${
entity
}
extends
${
superEntityClass
}#
if
(${
activeRecord
})
<
${
entity
}
>
#
end
{
#
elseif
(${
activeRecord
})
public class
${
entity
}
extends Model
<
${
entity
}
>
{
#
elseif
(${
entitySerialVersionUID
})
public class
${
entity
}
implements Serializable
{
#
else
public class
${
entity
}
{
#
end
#
if
(${
entitySerialVersionUID
})
private static final long serialVersionUID = 1L;
#
end
## ---------- BEGIN 字段循环遍历 ----------
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
#
set
($
keyPropertyName
=
${
field
.
propertyName
})
#
end
#
if
(
"$!field.comment"
!=
""
)
/**
*
${
field
.
comment
}
*/
#
end
#
if
(${
field
.
keyFlag
})
## 主键
#
if
(${
field
.
keyIdentityFlag
})
@TableId(value = "
${
field
.
annotationColumnName
}
", type = IdType.AUTO)
#
elseif
(
!
$
null
.
isNull
(${
idType
})
&&
"$!idType"
!=
""
)
@TableId(value = "
${
field
.
annotationColumnName
}
", type = IdType.
${
idType
}
)
#
elseif
(${
field
.
convert
})
@TableId("
${
field
.
annotationColumnName
}
")
#
end
## 普通字段
#
elseif
(${
field
.
fill
})
## ----- 存在字段填充设置 -----
#
if
(${
field
.
convert
})
@TableField(value = "
${
field
.
annotationColumnName
}
", fill = FieldFill.
${
field
.
fill
}
)
#
else
@TableField(fill = FieldFill.
${
field
.
fill
}
)
#
end
#
elseif
(${
field
.
convert
})
@TableField("
${
field
.
annotationColumnName
}
")
#
end
## 乐观锁注解
#
if
(${
field
.
versionField
})
@Version
#
end
## 逻辑删除注解
#
if
(${
field
.
logicDeleteField
})
@TableLogic
#
end
private
${
field
.
propertyType
}
${
field
.
propertyName
}
;
#
end
## ---------- END 字段循环遍历 ----------
#
if
(
!
${
entityLombokModel
})
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
propertyType
.
equals
(
"boolean"
)})
#
set
($
getprefix
=
"is"
)
#
else
#
set
($
getprefix
=
"get"
)
#
end
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}
()
{
return
${
field
.
propertyName
}
;
}
#
if
(${
chainModel
})
public
${
entity
}
set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
else
public void set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
end
this.
${
field
.
propertyName
}
=
${
field
.
propertyName
}
;
#
if
(${
chainModel
})
return this;
#
end
}
#
end
## --foreach end---
#
end
## --end of #if(!${entityLombokModel})--
#
if
(${
entityColumnConstant
})
#
foreach
($
field
in
${
table
.
fields
})
public static final String
${
field
.
name
.
toUpperCase
()}
= "
${
field
.
name
}
";
#
end
#
end
#
if
(${
activeRecord
})
@Override
public Serializable pkVal()
{
#
if
(${
keyPropertyName
})
return this.
${
keyPropertyName
}
;
#
else
return null;
#
end
}
#
end
#
if
(
!
${
entityLombokModel
})
@Override
public String toString()
{
return "
${
entity
}
{
" +
#
foreach
($
field
in
${
table
.
fields
})
#
if
($
!
{
foreach
.
index
}
==0)
"
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
else
",
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
end
#
end
"}";
}
#
end
}
src/test/resources/templates/controller.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
.
Controller
}
;
import org.springframework.web.bind.annotation.RequestMapping;
#
if
(${
restControllerStyle
})
import org.springframework.web.bind.annotation.RestController;
#
else
import org.springframework.stereotype.Controller;
#
end
#
if
(${
superControllerClassPackage
})
import
${
superControllerClassPackage
}
;
#
end
/**
*
$
!
{
table.comment} 前端控制器
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
restControllerStyle
})
@RestController
#
else
@Controller
#
end
@RequestMapping("
#
if
(${
package
.
ModuleName
})
/
${
package
.
ModuleName
}#
end
/
#
if
(${
controllerMappingHyphenStyle
})${
controllerMappingHyphen
}#
else
${
table
.
entityPath
}#
end
")
#
if
(${
superControllerClass
})
public class
${
table
.
controllerName
}
extends
${
superControllerClass
}
{
#
else
public class
${
table
.
controllerName
}
{
#
end
}
src/test/resources/templates/converter.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
}
.converter;
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
}
;
#
end
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import
${
package
}
.dto.
${
entity
}
DTO;
import
${
package
}
.entity.
${
entity
}
;
import
${
package
}
.vo.
${
entity
}
PageVO;
import
${
package
}
.form.
${
entity
}
Form;
import
${
package
}
.bo.
${
entity
}
BO;
@Mapper(componentModel = "spring")
public interface
${
entity
}
Converter}
{
${
entity
}
PageVO bo2PageVo(
${
entity
}
BO bo);
Page
<
${
entity
}
PageVO>
bo2PageVo(Page
<
${
entity
}
BO>
bo);
${
entity
}
Form entity2Form(
${
entity
}
entity);
@InheritInverseConfiguration(name = "entity2Form")
${
entity
}
form2Entity(
${
entity
}
Form entity);
}
\ No newline at end of file
src/test/resources/templates/dto.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
}
.model.dto;
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
}
;
#
end
#
if
(${
springdoc
})
import io.swagger.v3.oas.annotations.media.Schema;
#
elseif
(${
swagger
})
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#
end
#
if
(${
entityLombokModel
})
import lombok.Getter;
import lombok.Setter;
#
if
(${
chainModel
})
import lombok.experimental.Accessors;
#
end
#
end
/**
*
$
!
{
table.comment} DTO
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
entityLombokModel
})
@Getter
@Setter
#
if
(${
chainModel
})
@Accessors(chain = true)
#
end
#
end
#
if
(${
table
.
convert
})
@TableName("
${
schemaName
}${
table
.
name
}
")
#
end
#
if
(${
springdoc
})
@Schema(name = "
${
entity
}
", description = "
$
!
{
table.comment}")
#
elseif
(${
swagger
})
@ApiModel(value = "
${
entity
}
对象", description = "
$
!
{
table.comment}")
#
end
#
if
(${
superEntityClass
})
public class
${
entity
}
extends
${
superEntityClass
}#
if
(${
activeRecord
})
<
${
entity
}
>
#
end
{
#
elseif
(${
activeRecord
})
public class
${
entity
}
extends Model
<
${
entity
}
>
{
#
elseif
(${
entitySerialVersionUID
})
public class
${
entity
}
implements Serializable
{
#
else
public class
${
entity
}
{
#
end
#
if
(${
entitySerialVersionUID
})
private static final long serialVersionUID = 1L;
#
end
## ---------- BEGIN 字段循环遍历 ----------
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
#
set
($
keyPropertyName
=
${
field
.
propertyName
})
#
end
#
if
(
"$!field.comment"
!=
""
)
#
if
(${
springdoc
})
@Schema(description = "
${
field
.
comment
}
")
#
elseif
(${
swagger
})
@ApiModelProperty("
${
field
.
comment
}
")
#
else
/**
*
${
field
.
comment
}
*/
#
end
#
end
private
${
field
.
propertyType
}
${
field
.
propertyName
}
;
#
end
## ---------- END 字段循环遍历 ----------
#
if
(
!
${
entityLombokModel
})
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
propertyType
.
equals
(
"boolean"
)})
#
set
($
getprefix
=
"is"
)
#
else
#
set
($
getprefix
=
"get"
)
#
end
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}
()
{
return
${
field
.
propertyName
}
;
}
#
if
(${
chainModel
})
public
${
entity
}
set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
else
public void set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
end
this.
${
field
.
propertyName
}
=
${
field
.
propertyName
}
;
#
if
(${
chainModel
})
return this;
#
end
}
#
end
## --foreach end---
#
end
## --end of #if(!${entityLombokModel})--
#
if
(${
entityColumnConstant
})
#
foreach
($
field
in
${
table
.
fields
})
public static final String
${
field
.
name
.
toUpperCase
()}
= "
${
field
.
name
}
";
#
end
#
end
#
if
(${
activeRecord
})
@Override
public Serializable pkVal()
{
#
if
(${
keyPropertyName
})
return this.
${
keyPropertyName
}
;
#
else
return null;
#
end
}
#
end
#
if
(
!
${
entityLombokModel
})
@Override
public String toString()
{
return "
${
entity
}
{
" +
#
foreach
($
field
in
${
table
.
fields
})
#
if
($
!
{
foreach
.
index
}
==0)
"
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
else
",
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
end
#
end
"}";
}
#
end
}
src/test/resources/templates/entity.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
.
Entity
}
;
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
}
;
#
end
#
if
(${
entityLombokModel
})
import lombok.Getter;
import lombok.Setter;
#
if
(${
chainModel
})
import lombok.experimental.Accessors;
#
end
#
end
/**
*
$
!
{
table.comment}
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
entityLombokModel
})
@Getter
@Setter
#
if
(${
chainModel
})
@Accessors(chain = true)
#
end
#
end
#
if
(${
table
.
convert
})
@TableName("
${
schemaName
}${
table
.
name
}
")
#
end
#
if
(${
superEntityClass
})
public class
${
entity
}
extends
${
superEntityClass
}#
if
(${
activeRecord
})
<
${
entity
}
>
#
end
{
#
elseif
(${
activeRecord
})
public class
${
entity
}
extends Model
<
${
entity
}
>
{
#
elseif
(${
entitySerialVersionUID
})
public class
${
entity
}
implements Serializable
{
#
else
public class
${
entity
}
{
#
end
#
if
(${
entitySerialVersionUID
})
private static final long serialVersionUID = 1L;
#
end
## ---------- BEGIN 字段循环遍历 ----------
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
#
set
($
keyPropertyName
=
${
field
.
propertyName
})
#
end
#
if
(
"$!field.comment"
!=
""
)
/**
*
${
field
.
comment
}
*/
#
end
#
if
(${
field
.
keyFlag
})
## 主键
#
if
(${
field
.
keyIdentityFlag
})
@TableId(value = "
${
field
.
annotationColumnName
}
", type = IdType.AUTO)
#
elseif
(
!
$
null
.
isNull
(${
idType
})
&&
"$!idType"
!=
""
)
@TableId(value = "
${
field
.
annotationColumnName
}
", type = IdType.
${
idType
}
)
#
elseif
(${
field
.
convert
})
@TableId("
${
field
.
annotationColumnName
}
")
#
end
## 普通字段
#
elseif
(${
field
.
fill
})
## ----- 存在字段填充设置 -----
#
if
(${
field
.
convert
})
@TableField(value = "
${
field
.
annotationColumnName
}
", fill = FieldFill.
${
field
.
fill
}
)
#
else
@TableField(fill = FieldFill.
${
field
.
fill
}
)
#
end
#
elseif
(${
field
.
convert
})
@TableField("
${
field
.
annotationColumnName
}
")
#
end
## 乐观锁注解
#
if
(${
field
.
versionField
})
@Version
#
end
## 逻辑删除注解
#
if
(${
field
.
logicDeleteField
})
@TableLogic
#
end
private
${
field
.
propertyType
}
${
field
.
propertyName
}
;
#
end
## ---------- END 字段循环遍历 ----------
#
if
(
!
${
entityLombokModel
})
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
propertyType
.
equals
(
"boolean"
)})
#
set
($
getprefix
=
"is"
)
#
else
#
set
($
getprefix
=
"get"
)
#
end
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}
()
{
return
${
field
.
propertyName
}
;
}
#
if
(${
chainModel
})
public
${
entity
}
set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
else
public void set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
end
this.
${
field
.
propertyName
}
=
${
field
.
propertyName
}
;
#
if
(${
chainModel
})
return this;
#
end
}
#
end
## --foreach end---
#
end
## --end of #if(!${entityLombokModel})--
#
if
(${
entityColumnConstant
})
#
foreach
($
field
in
${
table
.
fields
})
public static final String
${
field
.
name
.
toUpperCase
()}
= "
${
field
.
name
}
";
#
end
#
end
#
if
(${
activeRecord
})
@Override
public Serializable pkVal()
{
#
if
(${
keyPropertyName
})
return this.
${
keyPropertyName
}
;
#
else
return null;
#
end
}
#
end
#
if
(
!
${
entityLombokModel
})
@Override
public String toString()
{
return "
${
entity
}
{
" +
#
foreach
($
field
in
${
table
.
fields
})
#
if
($
!
{
foreach
.
index
}
==0)
"
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
else
",
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
end
#
end
"}";
}
#
end
}
src/test/resources/templates/form.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
}
.model.dto;
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
}
;
#
end
#
if
(${
springdoc
})
import io.swagger.v3.oas.annotations.media.Schema;
#
elseif
(${
swagger
})
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#
end
#
if
(${
entityLombokModel
})
import lombok.Getter;
import lombok.Setter;
#
if
(${
chainModel
})
import lombok.experimental.Accessors;
#
end
#
end
/**
*
$
!
{
table.comment} 表单对象
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
entityLombokModel
})
@Getter
@Setter
#
if
(${
chainModel
})
@Accessors(chain = true)
#
end
#
end
#
if
(${
table
.
convert
})
@TableName("
${
schemaName
}${
table
.
name
}
")
#
end
#
if
(${
springdoc
})
@Schema(name = "
${
entity
}
", description = "
$
!
{
table.comment}")
#
elseif
(${
swagger
})
@ApiModel(value = "
${
entity
}
对象", description = "
$
!
{
table.comment}")
#
end
#
if
(${
superEntityClass
})
public class
${
entity
}
extends
${
superEntityClass
}#
if
(${
activeRecord
})
<
${
entity
}
>
#
end
{
#
elseif
(${
activeRecord
})
public class
${
entity
}
extends Model
<
${
entity
}
>
{
#
elseif
(${
entitySerialVersionUID
})
public class
${
entity
}
implements Serializable
{
#
else
public class
${
entity
}
{
#
end
#
if
(${
entitySerialVersionUID
})
private static final long serialVersionUID = 1L;
#
end
## ---------- BEGIN 字段循环遍历 ----------
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
#
set
($
keyPropertyName
=
${
field
.
propertyName
})
#
end
#
if
(
"$!field.comment"
!=
""
)
#
if
(${
springdoc
})
@Schema(description = "
${
field
.
comment
}
")
#
elseif
(${
swagger
})
@ApiModelProperty("
${
field
.
comment
}
")
#
else
/**
*
${
field
.
comment
}
*/
#
end
#
end
private
${
field
.
propertyType
}
${
field
.
propertyName
}
;
#
end
## ---------- END 字段循环遍历 ----------
#
if
(
!
${
entityLombokModel
})
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
propertyType
.
equals
(
"boolean"
)})
#
set
($
getprefix
=
"is"
)
#
else
#
set
($
getprefix
=
"get"
)
#
end
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}
()
{
return
${
field
.
propertyName
}
;
}
#
if
(${
chainModel
})
public
${
entity
}
set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
else
public void set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
end
this.
${
field
.
propertyName
}
=
${
field
.
propertyName
}
;
#
if
(${
chainModel
})
return this;
#
end
}
#
end
## --foreach end---
#
end
## --end of #if(!${entityLombokModel})--
#
if
(${
entityColumnConstant
})
#
foreach
($
field
in
${
table
.
fields
})
public static final String
${
field
.
name
.
toUpperCase
()}
= "
${
field
.
name
}
";
#
end
#
end
#
if
(${
activeRecord
})
@Override
public Serializable pkVal()
{
#
if
(${
keyPropertyName
})
return this.
${
keyPropertyName
}
;
#
else
return null;
#
end
}
#
end
#
if
(
!
${
entityLombokModel
})
@Override
public String toString()
{
return "
${
entity
}
{
" +
#
foreach
($
field
in
${
table
.
fields
})
#
if
($
!
{
foreach
.
index
}
==0)
"
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
else
",
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
end
#
end
"}";
}
#
end
}
src/test/resources/templates/mapper.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
.
Mapper
}
;
import
${
package
.
Entity
}
.
${
entity
}
;
import
${
superMapperClassPackage
}
;
#
if
(${
mapperAnnotationClass
})
import
${
mapperAnnotationClass
.
name
}
;
#
end
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
*
$
!
{
table.comment} Mapper 接口
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
mapperAnnotationClass
})
@
${
mapperAnnotationClass
.
simpleName
}
#
end
public interface
${
table
.
mapperName
}
extends
${
superMapperClass
}
<
${
entity
}
>
{
/**
* 获取用户分页列表
*
* @param page
* @param queryParams 查询参数
* @return
*/
Page
<
${
entity
}
BO>
listPaged
${
entity
}
s(Page
<
${
entity
}
BO>
page,
${
entity
}
PageQuery queryParams);
}
src/test/resources/templates/mapper.xml.vm
0 → 100644
浏览文件 @
4b4bee4c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"
${
package
.
Mapper
}
.
${
table
.
mapperName
}
"
>
#
if
(${
enableCache
})
<!-- 开启二级缓存 -->
<cache
type=
"
${
cacheClassName
}
"
/>
#
end
#
if
(${
baseResultMap
})
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"
${
package
.
Entity
}
.
${
entity
}
"
>
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
##生成主键排在第一位
<id
column=
"
${
field
.
name
}
"
property=
"
${
field
.
propertyName
}
"
/>
#
end
#
end
#
foreach
($
field
in
${
table
.
commonFields
})
##生成公共字段
<result
column=
"
${
field
.
name
}
"
property=
"
${
field
.
propertyName
}
"
/>
#
end
#
foreach
($
field
in
${
table
.
fields
})
#
if
(
!
${
field
.
keyFlag
})
##生成普通字段
<result
column=
"
${
field
.
name
}
"
property=
"
${
field
.
propertyName
}
"
/>
#
end
#
end
</resultMap>
#
end
#
if
(${
baseColumnList
})
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
#
foreach
($
field
in
${
table
.
commonFields
})
${
field
.
columnName
}
,
#
end
${
table
.
fieldNames
}
</sql>
#
end
<!--
${
table
.
comment
}
分页列表 -->
<select
id=
"listPaged
${
entity
}
s"
resultType=
"
${
package
.
Parent
}
.model.bo.
${
entity
}
BO"
>
SELECT
${
Base_Column_List
}
FROM
${
table
.
name
}
<where>
deleted = 0
<if
test=
'queryParams.keywords!=null and queryParams.keywords.trim() neq ""'
>
AND (
name LIKE CONCAT('%',
#{
queryParams
.keywords},'%')
)
</if>
<if
test=
'queryParams.status!=null'
>
AND status =
#{
queryParams
.status}
</if>
<if
test=
"queryParams.startTime != null"
>
AND create_time
>
=
#{
queryParams
.startTime}
</if>
<if
test=
"queryParams.endTime != null"
>
AND create_time
<
=
#{
queryParams
.endTime}
</if>
</where>
</select>
</mapper>
src/test/resources/templates/pageQuery.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
}
.model.query;
import
${
package
}
.common.base.BasePageQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
*
$
!
{
table.comment}分页查询对象
*
* @author
${
author
}
* @since
${
date
}
*/
@Schema(description ="
$
!
{
table.comment}分页查询对象")
@Data
public class
${
entity
}
PageQuery extends BasePageQuery
{
@Schema(description="关键字")
private String keywords;
}
src/test/resources/templates/service.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
.
Service
}
;
import
${
package
.
Entity
}
.
${
entity
}
;
import
${
superServiceClassPackage
}
;
/**
*
$
!
{
table.comment} 服务类
*
* @author
${
author
}
* @since
${
date
}
*/
public interface
${
table
.
serviceName
}
extends
${
superServiceClass
}
<
${
entity
}
>
{
/**
*
$
!
{
table.comment}分页列表
*
* @return
*/
IPage
<
${
entity
}
PageVO>
listPaged
${
entity
}
s(
${
entity
}
PageQuery queryParams);
/**
* 获取
$
!
{
table.comment}表单数据
*
* @param userId
* @return
*/
${
entity
}
Form get
${
entity
}
FormData(Long id);
/**
* 新增
$
!
{
table.comment}
*
* @param formData
$
!
{
table.comment}表单对象
* @return
*/
boolean save
${
entity
}
(
${
entity
}
Form formData);
/**
* 修改
$
!
{
table.comment}
*
* @param id
$
!
{
table.comment}ID
* @param formData
$
!
{
table.comment}表单对象
* @return
*/
boolean update
${
entity
}
(Long id, UserForm formData);
/**
* 删除
$
!
{
table.comment}
*
* @param idsStr
$
!
{
table.comment}ID,多个以英文逗号(,)分割
* @return
*/
boolean delete
${
entity
}
s(String idsStr);
}
src/test/resources/templates/serviceImpl.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
.
ServiceImpl
}
;
import
${
package
.
Entity
}
.
${
entity
}
;
import
${
package
.
Mapper
}
.
${
table
.
mapperName
}
;
import
${
package
.
Service
}
.
${
table
.
serviceName
}
;
import
${
superServiceImplClassPackage
}
;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.youlai.system.common.util.DateUtils;
/**
*
$
!
{
table.comment} 服务实现类
*
* @author
${
author
}
* @since
${
date
}
*/
@Service
@RequiredArgsConstructor
public class
${
table
.
serviceImplName
}
extends
${
superServiceImplClass
}
<
${
table
.
mapperName
}
,
${
entity
}
>
implements
${
table
.
serviceName
}
{
private final
${
entity
}
Converter converter;
/**
* 获取
$
!
{
table.comment}分页列表
*
* @param queryParams 查询参数
* @return
{
@link IPage
<
${
entity
}
PageVO>
}
$
!
{
table.comment}分页列表
*/
@Override
public IPage
<
${
entity
}
PageVO>
listPaged
${
entity
}
s(
${
entity
}
PageQuery queryParams)
{
// 参数构建
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
Page
<
${
entity
}
BO>
page = new Page
<>
(pageNum, pageSize);
// 格式化为数据库日期格式,避免日期比较使用格式化函数导致索引失效
DateUtils.toDatabaseFormat(queryParams, "startTime", "endTime");
// 查询数据
Page
<
${
entity
}
BO>
boPage = this.baseMapper.listPaged
${
entity
}
s(page, queryParams);
// 实体转换
return converter.bo2PageVo(boPage);
}
/**
* 获取
$
!
{
table.comment}表单数据
*
* @param userId
$
!
{
table.comment}ID
* @return
*/
@Override
public
${
entity
}
Form get
${
entity
}
FormData(Long userId)
{
return this.baseMapper.get
${
entity
}
FormData(userId);
}
/**
* 新增
$
!
{
table.comment}
*
* @param formData
$
!
{
table.comment}表单对象
* @return
*/
@Override
public boolean save
${
entity
}
(
${
entity
}
Form formData)
{
// 实体转换 form->entity
SysUser entity = converter.form2Entity(formData);
return this.save(entity);
}
/**
* 更新
$
!
{
table.comment}
*
* @param userId
$
!
{
table.comment}ID
* @param formData
$
!
{
table.comment}表单对象
* @return
*/
@Override
@Transactional
public boolean update
${
entity
}
(Long id,
${
entity
}
Form formData)
{
${
entity
}
entity = converter.form2Entity(formData);
return this.updateById(entity);
}
/**
* 删除
$
!
{
table.comment}
*
* @param idsStr
$
!
{
table.comment}ID,多个以英文逗号(,)分割
* @return true|false
*/
@Override
public boolean delete
${
entity
}
s(String idsStr)
{
Assert.isTrue(StrUtil.isNotBlank(idsStr), "删除的
$
!
{
table.comment}数据为空");
// 逻辑删除
List
<Long>
ids = Arrays.stream(idsStr.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
return this.removeByIds(ids);
}
}
src/test/resources/templates/vo.java.vm
0 → 100644
浏览文件 @
4b4bee4c
package
${
package
}
.model.vo;
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
}
;
#
end
#
if
(${
springdoc
})
import io.swagger.v3.oas.annotations.media.Schema;
#
elseif
(${
swagger
})
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#
end
#
if
(${
entityLombokModel
})
import lombok.Getter;
import lombok.Setter;
#
if
(${
chainModel
})
import lombok.experimental.Accessors;
#
end
#
end
/**
*
$
!
{
table.comment} VO
*
* @author
${
author
}
* @since
${
date
}
*/
#
if
(${
entityLombokModel
})
@Getter
@Setter
#
if
(${
chainModel
})
@Accessors(chain = true)
#
end
#
end
#
if
(${
table
.
convert
})
@TableName("
${
schemaName
}${
table
.
name
}
")
#
end
#
if
(${
springdoc
})
@Schema(name = "
${
entity
}
", description = "
$
!
{
table.comment}")
#
elseif
(${
swagger
})
@ApiModel(value = "
${
entity
}
对象", description = "
$
!
{
table.comment}")
#
end
#
if
(${
superEntityClass
})
public class
${
entity
}
extends
${
superEntityClass
}#
if
(${
activeRecord
})
<
${
entity
}
>
#
end
{
#
elseif
(${
activeRecord
})
public class
${
entity
}
extends Model
<
${
entity
}
>
{
#
elseif
(${
entitySerialVersionUID
})
public class
${
entity
}
implements Serializable
{
#
else
public class
${
entity
}
{
#
end
#
if
(${
entitySerialVersionUID
})
private static final long serialVersionUID = 1L;
#
end
## ---------- BEGIN 字段循环遍历 ----------
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
#
set
($
keyPropertyName
=
${
field
.
propertyName
})
#
end
#
if
(
"$!field.comment"
!=
""
)
#
if
(${
springdoc
})
@Schema(description = "
${
field
.
comment
}
")
#
elseif
(${
swagger
})
@ApiModelProperty("
${
field
.
comment
}
")
#
else
/**
*
${
field
.
comment
}
*/
#
end
#
end
private
${
field
.
propertyType
}
${
field
.
propertyName
}
;
#
end
## ---------- END 字段循环遍历 ----------
#
if
(
!
${
entityLombokModel
})
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
propertyType
.
equals
(
"boolean"
)})
#
set
($
getprefix
=
"is"
)
#
else
#
set
($
getprefix
=
"get"
)
#
end
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}
()
{
return
${
field
.
propertyName
}
;
}
#
if
(${
chainModel
})
public
${
entity
}
set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
else
public void set
${
field
.
capitalName
}
(
${
field
.
propertyType
}
${
field
.
propertyName
}
)
{
#
end
this.
${
field
.
propertyName
}
=
${
field
.
propertyName
}
;
#
if
(${
chainModel
})
return this;
#
end
}
#
end
## --foreach end---
#
end
## --end of #if(!${entityLombokModel})--
#
if
(${
entityColumnConstant
})
#
foreach
($
field
in
${
table
.
fields
})
public static final String
${
field
.
name
.
toUpperCase
()}
= "
${
field
.
name
}
";
#
end
#
end
#
if
(${
activeRecord
})
@Override
public Serializable pkVal()
{
#
if
(${
keyPropertyName
})
return this.
${
keyPropertyName
}
;
#
else
return null;
#
end
}
#
end
#
if
(
!
${
entityLombokModel
})
@Override
public String toString()
{
return "
${
entity
}
{
" +
#
foreach
($
field
in
${
table
.
fields
})
#
if
($
!
{
foreach
.
index
}
==0)
"
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
else
",
${
field
.
propertyName
}
= " +
${
field
.
propertyName
}
+
#
end
#
end
"}";
}
#
end
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录