SpringBoot集成MyBatis-Plus代码生成器FastAutoGenerator

MyBatis-Plus提供FastAutoGenerator代码生成器,根据数据库中已经存在的表,生成Entity、Mapper、Mapper XML、Service、Controller等各个模块的代码,可以极大的提升开发效率。

1、添加依赖

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
</dependency>
<!-- mybatis-plus -->
<dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.5.1</version>
</dependency>
<!-- 代码生成器 -->
<dependency>
    <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-generator</artifactId>
     <version>3.5.1</version>
</dependency>

 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<OutputFile, String>) 路径配置信息 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<TableInfo, Map<String, Object>>) 输出文件之前消费者
customMap(Map<String, Object>) 自定义配置 Map 对象 Collections.singletonMap(“test”, “baomidou”)
customFile(Map<String, String>) 自定义配置模板文件 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<? extends Cache>) 设置缓存实现类 MyMapperCache.class
convertMapperFileName(ConverterFileName) 转换 mapper 类文件名称
convertXmlFileName(ConverterFileName) 转换 xml 文件名称
formatMapperFileName(String) 格式化 mapper 文件名称
formatXmlFileName(String) 格式化 xml 实现类文件名称


​​​​​​​
​​​​​​​​​​​​​​​​​​​​​ 

猜你喜欢

转载自blog.csdn.net/watson2017/article/details/125684134