MyBatis-Plus提供FastAutoGenerator代码生成器,根据数据库中已经存在的表,生成Entity、Mapper、Mapper XML、Service、Controller等各个模块的代码,可以极大的提升开发效率。
1、添加依赖
mysql
mysql-connector-java
runtime
com.baomidou
mybatis-plus-boot-starter
3.5.1
com.baomidou
mybatis-plus-generator
3.5.1
2、创建快速代码生成器
public class GeneratorUtil {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8", "username", "password")
//全局配置
.globalConfig(builder -> {
builder.author("hepburn") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("/home/demo/src/main/java/"); // 指定输出目录
})
//包配置
.packageConfig(builder -> {
builder.parent("com.example.demo") // 设置父包名
.moduleName("domain") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "/home/demo/src/main/resources/mybatis/mapper")); // 设置mapperXml生成路径
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude("specifications", "sensitive_types", "sensitive_levels", "sensitive_elements", "sensitive_elements_rules", "detection_strategies", "algorithm_models", "algorithm_labels", "strategys") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
//.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
3、修改application.properties配置文件
#mysql
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.hikari.minimum-idle=3
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.max-lifetime=30000
spring.datasource.hikari.connection-test-query=SELECT 1
#mybatis-plus
mybatis-plus.mapper-locations=classpath*:mybatis/mapper/*Mapper.xml
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
4、运行GeneratorUtil生成代码
执行完成。就可以看到项目结构和文件已经生成好了。
配置说明
1. 数据库配置(DataSourceConfig)
1.1 基础配置
| 属性 | 说明 | 示例 |
|---|
| url | jdbc路径 | jdbc:mysql://localhost:3306/(数据库名称) |
| username | 数据库账号 | root |
| password | 数据库密码 | 123456 |
1.2 可选配置
| 方法 | 说明 | 示例 / 参数 |
|---|
| dbQuery(IDbQuery) | 数据库查询 | new MySqlQuery() |
| schema(String) | 数据库 schema(部分数据库适用) | mybatis-plus |
| typeConvert(ITypeConvert) | 数据库类型转换器 | new MySqlTypeConvert() |
| keyWordsHandler(IKeyWordsHandler) | 数据库关键字处理器 | new MySqlKeyWordsHandler() |
2. 全局配置(GlobalConfig)
| 方法 | 说明 | 示例 / 参数 |
|---|
| fileOverride | 覆盖已生成文件 | 默认值:false |
| disableOpenDir | 禁止打开输出目录 | 默认值:true |
| outputDir(String) | 指定输出目录 | projectPath + “/src/main/java”(当前工程路径+"/src/main/java") |
| author(String) | 作者名 | vinjcent |
| enableKotlin | 开启 kotlin 模式 | 默认值:false |
| enableSwagger | 开启 swagger 模式 | 默认值:false |
| dateType(DateType) | 时间类型 | ONLY_DATE、SQL_PACK、TIME_PACK(jdk1.8以上才支持,推荐使用) |
| commentDate(String) | 注释日期 | 默认值:yyyy-MM-dd,可使用"“yyyy-MM-dd HH:mm:ss”" |
3. 包配置(PackageConfig)
| 方法 | 说明 | 示例 / 参数 |
|---|
| parent(String) | 父包名 | 默认值:com.vinjcent |
| 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) | 自定义文件包名 | 可使用"other",生产一个other文件目录 |
| pathInfo(Map) | 路径配置信息 | Collections.singletonMap(OutputFile.mapperXml, “D://”) |
4. 模板配置(TemplateConfig)
| 方法 | 说明 | 示例 / 参数 |
|---|
| 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 |
5. 注入配置(InjectionConfig)
| 方法 | 说明 | 示例 / 参数 |
|---|
| beforeOutputFile(BiConsumer) | 输出文件之前消费者 | |
| customMap(Map) | 自定义配置 Map 对象 | Collections.singletonMap(“test”, “baomidou”) |
| customFile(Map) | 自定义配置模板文件 | Collections.singletonMap(“test.txt”, “/templates/test.vm”) |
6. 策略配置(StrategyConfig)
| 方法 | 说明 | 示例 / 参数 |
|---|
| enableCapitalMode | 开启大写命名 | 默认值:false |
| enableSkipView | 开启跳过视图 | 默认值:false |
| disableSqlFilter | 禁用 sql 过滤 | 默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关 |
| enableSchema | 启用 schema | 默认值:false,多 schema 场景的时候打开 |
| likeTable(LikeTable) | 模糊表匹配(sql 过滤) | likeTable 与 notLikeTable 只能配置一项 |
| notLikeTable(LikeTable) | 模糊表排除(sql 过滤) | likeTable 与 notLikeTable 只能配置一项 |
| addInclude(String…) | 增加表匹配(内存过滤) | include 与 exclude 只能配置一项 |
| addExclude(String…) | 增加表排除匹配(内存过滤) | include 与 exclude 只能配置一项 |
| addTablePrefix(String…) | 增加过滤表前缀 | |
| addTablePrefix(String…) | 增加过滤表前缀 | |
| addTableSuffix(String…) | 增加过滤表后缀 | |
| addFieldPrefix(String…) | 增加过滤字段前缀 | |
| addFieldSuffix(String…) | 增加过滤字段后缀 | |
| entityBuilder | 实体策略配置 | |
| controllerBuilder | controller 策略配置 | |
| mapperBuilder | mapper 策略配置 | |
| serviceBuilder | service 策略配置 | |
6.1 Entity 策略配置
| 方法 | 说明 | 示例 / 参数 |
|---|
| nameConvert(INameConvert) | 名称转换实现 | |
| superClass(Class) | 设置父类 | BaseEntity.class |
| superClass(String) | 设置父类 | com.baomidou.global.BaseEntity |
| disableSerialVersionUID | 禁用生成 serialVersionUID | 默认值:true |
| enableColumnConstant | 开启生成字段常量 | 默认值:false |
| enableChainModel | 开启链式模型 | 默认值:false |
| enableLombok | 开启 lombok 模型 | 默认值:false |
| enableRemoveIsPrefix | 开启 Boolean 类型字段移除 is 前缀 | 默认值:false |
| enableTableFieldAnnotation | 开启生成实体时生成字段注解 | 默认值:false |
| enableActiveRecord | 开启 ActiveRecord 模型 | 默认值:false |
| versionColumnName(String) | 乐观锁字段名(数据库) | |
| versionPropertyName(String) | 乐观锁属性名(实体) | |
| logicDeleteColumnName(String) | 逻辑删除字段名(数据库) | |
| logicDeletePropertyName(String) | 逻辑删除属性名(实体) | |
| naming | 数据库表映射到实体的命名策略 | 默认下划线转驼峰命名:NamingStrategy.underline_to_camel |
| columnNaming | 数据库表字段映射到实体的命名策略 | 默认为 null,未指定按照 naming 执行 |
| addSuperEntityColumns(String…) | 添加父类公共字段 | |
| addIgnoreColumns(String…) | 添加忽略字段 | |
| addTableFills(IFill…) | 添加表字段填充 | |
| addTableFills(List) | 添加表字段填充 | |
| idType(IdType) | 全局主键类型 | |
| convertFileName(ConverterFileName) | 转换文件名称 | |
| formatFileName(String) | 格式化文件名称 | |
6.2 Controller 策略配置
| 方法 | 说明 | 示例 / 参数 |
|---|
| superClass(Class) | 设置父类 | BaseController.class |
| superClass(String) | 设置父类 | com.baomidou.global.BaseController |
| enableHyphenStyle | 开启驼峰转连字符 | 默认值:false |
| enableRestStyle | 开启生成@RestController 控制器 | 默认值:false |
| convertFileName(ConverterFileName) | 转换文件名称 | |
| formatFileName(String) | 格式化文件名称 | |
6.3 Service 策略配置
| 方法 | 说明 | 示例 / 参数 |
|---|
| superServiceClass(Class) | 设置 service 接口父类 | BaseService.class |
| superServiceClass(String) | 设置 service 接口父类 | com.baomidou.global.BaseService |
| superServiceImplClass(Class) | 设置 service 实现类父类 | BaseServiceImpl.class |
| superServiceImplClass(String) | 设置 service 实现类父类 | com.baomidou.global.BaseServiceImpl |
| convertServiceFileName(ConverterFileName) | 转换 service 接口文件名称 | |
| convertServiceImplFileName(ConverterFileName) | 转换 service 实现类文件名称 | |
| formatServiceFileName(String) | 格式化 service 接口文件名称 | |
| formatServiceImplFileName(String) | 格式化 service 实现类文件名称 | |
6.4 Mapper 策略配置
| 方法 | 说明 | 示例 / 参数 |
|---|
| superClass(Class) | 设置父类 | BaseMapper.class |
| superClass(String) | 设置父类 | com.baomidou.global.BaseMapper |
| enableMapperAnnotation | 开启 @Mapper 注解 | 默认值:false |
| enableBaseResultMap | 启用 BaseResultMap 生成 | 默认值:false |
| enableBaseColumnList | 启用 BaseColumnList | 默认值:false |
cache(Class
-
8浏览
0关注
365博文
0收益
-
0浏览
0点赞
0打赏
0留言
立即登录/注册
微信扫码登录
|