MyBatis Plus Generator

本文将介绍 MyBatis-Plus Generator,一个好用的代码生成器。

一、数据库配置 - DataSourceConfig

1. 基础配置

属性 说明 示例
url jdbc路径 jdbc:mysql://127.0.0.1:3306/mybatis-plus
username 数据库账号 root
password 数据库密码 123456

2. 可选配置

方法 说明 示例
dbQuery(IDbQuery) 数据库查询 new MySqlQuery()
schema(String) 数据库schema mybatis-plus
typeConvert(ITypeConvert) 数据库类型转换器 new MySqlTypeConvert()
keyWordsHandler(IKeyWordsHandler) 数据库关键字处理器 new MySqlKeyWordsHandler()

3. 示例

1
2
3
4
5
6
7
new DataSourceConfig
.Builder([url], [username], [password])
.dbQuery(new MySqlQuery())
.schema("mybatis-plus")
.typeConvert(new MySqlTypeConvert())
.keyWordsHandler(new MySqlKeyWordsHandler())
.build();

二、全局配置 - GlobalConfig

1. 配置方法

方法 说明 示例
fileOverride 覆盖已生成文件 默认值:false
disableOpenDir 禁止打开输出目录 默认值:true
outputDir(String) 指定输出目录 默认值: windows:D:// linux or mac : /tmp
author(String) 作者名 默认值:作者
enableKotlin 开启 kotlin 模式 默认值:false
enableSwagger 开启 swagger 模式 默认值:false
dateType(DateType) 时间策略 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
commentDate(String) 注释日期 默认值: yyyy-MM-dd

2. 示例

1
2
3
4
5
6
7
8
9
new GlobalConfig.Builder()
.fileOverride()
.outputDir(".../java")
.author([author])
.enableKotlin()
.enableSwagger()
.dateType(DateType.TIME_PACK)
.commentDate("yyyy-MM-dd")
.build();

三、包配置 - PackageConfig

1. 配置方法

方法 说明 示例
parent(String) 父包名 默认值:com.baomidou
moduleName(String) 父包模块名 默认值:无
entity(String) Entity 包名 默认值:entity
service(String) Service 包名 默认值:service
serviceImpl(String) Service Impl 包名 默认值:service.impl
mapper(String) Mapper 包名 默认值:mapper
mapperXml(String) Mapper XML 包名 默认值:mapper.xml
controller(String) Controller 包名 默认值:controller
other(String) 自定义文件包名 输出自定义文件时所用到的包名
pathInfo(Map<OutputFile, String>) 路径配置信息 Collections.singletonMap(OutputFile.mapperXml, “D://“)

2. 示例

1
2
3
4
5
6
7
8
9
10
11
12
new PackageConfig.Builder()
.parent("com.baomidou.mybatisplus.samples.generator")
.moduleName("sys")
.entity("po")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.mapperXml("mapper.xml")
.controller("controller")
.other("other")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, ".../resources/mapper"))
.build();

四、模板配置 - TemplateConfig

1. 配置方法

方法 说明 示例
disable 禁用所有模板
disable(TemplateType…) 禁用模板 TemplateType.ENTITY
entity(String) 设置实体模板路径(Java) /templates/entity.java
entityKt(String) 设置实体模板路径(kotlin) /templates/entity.java
service(String) 设置 service 模板路径 /templates/service.java
serviceImpl(String) 设置 serviceImpl 模板路径 /templates/serviceImpl.java
mapper(String) 设置 mapper 模板路径 /templates/mapper.java
mapperXml(String) 设置 mapperXml 模板路径 /templates/mapper.xml
controller(String) 设置 controller 模板路径 /templates/controller.java

2. 示例

1
2
3
4
5
6
7
8
9
new TemplateConfig.Builder()
.disable(TemplateType.ENTITY)
.entity("/templates/entity.java")
.service("/templates/service.java")
.serviceImpl("/templates/serviceImpl.java")
.mapper("/templates/mapper.java")
.mapperXml("/templates/mapper.xml")
.controller("/templates/controller.java")
.build();

五、模板引擎

1. 默认模板引擎

默认使用 Velocity 引擎模板。

2. AutoGenerator 作为生成器时配置

可以使用 execute(AbstractTemplateEngine templateEngine) 方法进行配置,填入模板引擎对象。

1
2
3
4
5
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);

···

autoGenerator.execute(模板引擎对象);

3. FastAutoGenerator 作为生成器时配置

可以使用 templateEngine(AbstractTemplateEngine templateEngine) 方法进行配置,填入模板引擎对象。

1
2
3
4
5
6
FastAutoGenerator

···

.templateEngine(模板引擎对象)
.execute();

4. 注意事项

使用模板引擎时,请确保已经在 pom.xml 中正确导入依赖,否则将会报错。

六、注入配置 - InjectionConfig

1. 配置方法

方法 说明 示例
beforeOutputFile(BiConsumer<TableInfo, Map<String, Object>>) 输出文件之前
customMap(Map<String, Object>) 自定义配置 Map 对象 Collections.singletonMap(“test”, “baomidou”)
customFile(Map<String, String>) 自定义配置模板文件 Collections.singletonMap(“test.txt”, “/templates/test.vm”)

2. 示例

1
2
3
4
5
6
7
new InjectionConfig.Builder()
.beforeOutputFile((tableInfo, objectMap) -> {
System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
})
.customMap(Collections.singletonMap("test", "baomidou"))
.customFile(Collections.singletonMap("test.txt", "/templates/test.vm"))
.build();

七、策略配置

具体请看:

代码生成器(3.5.1+版本) | MyBatis-Plus

八、AutoGenerator

可以使用 AutoGenerator 作为生成器,读取配置并生成文件。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
// 创建 DataSourceConfig 实例

// 创建可选的其它的配置实例

// 传入 DataSourceConfig 实例,实例化 AutoGenerator
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);

// 调用 xxx() 配置方法,传入 xxxConfig 配置实例进行配置
autoGenerator.global(globalConfig).packageInfo(packageConfig);

// 调用 excute() 方法,可以选择性地传入模板引擎实例,生成文件
autoGenerator.execute([可以传入模板引擎实例]);

九、FastAutoGenerator

可以 FastAutoGenerator 作为生成器,读取配置并生成文件。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 调用 create() 方法,传入 DataSourceConfig 实例或填入数据库路径、用户名和密码
FastAutoGenerator.create([dataSourceConfig] / [url], [username], [password])
// 调用 xxxConfig() 方法,传入函数,在函数中对参数进行配置
.globalConfig(builder -> {
builder
// 设置作者
.author([author])
// 开启 swagger 模式
.enableSwagger()
// 覆盖已生成文件
.fileOverride()
// 设置生成文件路径
.outputDir(".../java");
})
// 可以调用 templateEngine() 方法,传入模板引擎对象
.templateEngine(new FreemarkerTemplateEngine())
// 调用 excute() 方法,生成文件
.execute();

参考