本文将介绍 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
|
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
autoGenerator.global(globalConfig).packageInfo(packageConfig);
autoGenerator.execute([可以传入模板引擎实例]);
|
九、FastAutoGenerator
可以 FastAutoGenerator 作为生成器,读取配置并生成文件。
使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| FastAutoGenerator.create([dataSourceConfig] / [url], [username], [password]) .globalConfig(builder -> { builder .author([author]) .enableSwagger() .fileOverride() .outputDir(".../java"); }) .templateEngine(new FreemarkerTemplateEngine()) .execute();
|
参考