MyBatis-Plus MyBatis-Plus
首页
  • 快速入门
  • 核心功能
  • 扩展
  • 插件
  • 使用配置
  • 代码生成器配置新
  • 代码生成器配置旧
生态
问答
💖支持
  • 数据处理模块
  • 单体开发平台
  • 微服务开发平台
  • 插件式一体化开发平台
更新日志 (opens new window)
GitHub (opens new window)
首页
  • 快速入门
  • 核心功能
  • 扩展
  • 插件
  • 使用配置
  • 代码生成器配置新
  • 代码生成器配置旧
生态
问答
💖支持
  • 数据处理模块
  • 单体开发平台
  • 微服务开发平台
  • 插件式一体化开发平台
更新日志 (opens new window)
GitHub (opens new window)
  • 使用配置

    • 使用配置
  • 代码生成器配置

    • 代码生成器配置新
      • 数据库配置(DataSourceConfig)
        • 基础配置
        • 可选配置
      • 全局配置(GlobalConfig)
      • 包配置(PackageConfig)
      • 模板配置(TemplateConfig)
      • 注入配置(InjectionConfig)
      • 策略配置(StrategyConfig)
        • Entity 策略配置
        • Controller 策略配置
        • Service 策略配置
        • Mapper 策略配置
      • 自定义模版支持(DTO\VO等)配置
        • Freemarker模版支持(DTO\VO等)配置
    • 代码生成器配置旧
目录

代码生成器配置新

# 数据库配置(DataSourceConfig)

# 基础配置

属性 说明 示例
url jdbc 路径 jdbc:mysql://127.0.0.1:3306/mybatis-plus
username 数据库账号 root
password 数据库密码 123456
new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3306/mybatis-plus","root","123456")
    .build();
1
2

# 可选配置

方法 说明 示例
dbQuery(IDbQuery) 数据库查询 new MySqlQuery()
schema(String) 数据库 schema(部分数据库适用) mybatis-plus
typeConvert(ITypeConvert) 数据库类型转换器 new MySqlTypeConvert()
keyWordsHandler(IKeyWordsHandler) 数据库关键字处理器 new MySqlKeyWordsHandler()
new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3306/mybatis-plus","root","123456")
    .dbQuery(new MySqlQuery())
    .schema("mybatis-plus")
    .typeConvert(new MySqlTypeConvert())
    .keyWordsHandler(new MySqlKeyWordsHandler())
    .build();
1
2
3
4
5
6

# 全局配置(GlobalConfig)

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

# 包配置(PackageConfig)

方法 说明 示例
parent(String) 父包名 默认值:com.baomidou
moduleName(String) 父包模块名 默认值:无
entity(String) Entity 包名 默认值:entity
service(String) Service 包名 默认值:service
serviceImpl(String) Service Impl 包名 默认值:service.impl
mapper(String) Mapper 包名 默认值:mapper
xml(String) Mapper XML 包名 默认值:mapper.xml
controller(String) Controller 包名 默认值:controller
other(String) 自定义文件包名 输出自定义文件时所用到的包名
pathInfo(Map<OutputFile, String>) 路径配置信息 Collections.singletonMap(OutputFile.mapperXml, "D://")
new PackageConfig.Builder()
    .parent("com.baomidou.mybatisplus.samples.generator")
    .moduleName("sys")
    .entity("po")
    .service("service")
    .serviceImpl("service.impl")
    .mapper("mapper")
    .xml("mapper.xml")
    .controller("controller")
    .other("other")
    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://"))
    .build();
1
2
3
4
5
6
7
8
9
10
11
12

# 模板配置(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
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
2
3
4
5
6
7
8
9

# 注入配置(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")
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();
1
2
3
4
5
6
7

# 策略配置(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...) 增加过滤表前缀
addTableSuffix(String...) 增加过滤表后缀
addFieldPrefix(String...) 增加过滤字段前缀
addFieldSuffix(String...) 增加过滤字段后缀
entityBuilder 实体策略配置
controllerBuilder controller 策略配置
mapperBuilder mapper 策略配置
serviceBuilder service 策略配置
new StrategyConfig.Builder()
    .enableCapitalMode()
    .enableSkipView()
    .disableSqlFilter()
    .likeTable(new LikeTable("USER"))
    .addInclude("t_simple")
    .addTablePrefix("t_", "c_")
    .addFieldSuffix("_flag")
    .build();
1
2
3
4
5
6
7
8
9

# 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<IFill>) 添加表字段填充
idType(IdType) 全局主键类型
convertFileName(ConverterFileName) 转换文件名称
formatFileName(String) 格式化文件名称
new StrategyConfig.Builder()
    .entityBuilder()
    .superClass(BaseEntity.class)
    .disableSerialVersionUID()
    .enableChainModel()
    .enableLombok()
    .enableRemoveIsPrefix()
    .enableTableFieldAnnotation()
    .enableActiveRecord()
    .versionColumnName("version")
    .versionPropertyName("version")
    .logicDeleteColumnName("deleted")
    .logicDeletePropertyName("deleteFlag")
    .naming(NamingStrategy.no_change)
    .columnNaming(NamingStrategy.underline_to_camel)
    .addSuperEntityColumns("id", "created_by", "created_time", "updated_by", "updated_time")
    .addIgnoreColumns("age")
    .addTableFills(new Column("create_time", FieldFill.INSERT))
    .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
    .idType(IdType.AUTO)
    .formatFileName("%sEntity")
    .build();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# Controller 策略配置

方法 说明 示例
superClass(Class<?>) 设置父类 BaseController.class
superClass(String) 设置父类 com.baomidou.global.BaseController
enableHyphenStyle 开启驼峰转连字符 默认值:false
enableRestStyle 开启生成@RestController 控制器 默认值:false
convertFileName(ConverterFileName) 转换文件名称
formatFileName(String) 格式化文件名称
new StrategyConfig.Builder()
    .controllerBuilder()
    .superClass(BaseController.class)
    .enableHyphenStyle()
    .enableRestStyle()
    .formatFileName("%sAction")
    .build();
1
2
3
4
5
6
7

# 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 实现类文件名称
new StrategyConfig.Builder()
    .serviceBuilder()
    .superServiceClass(BaseService.class)
    .superServiceImplClass(BaseServiceImpl.class)
    .formatServiceFileName("%sService")
    .formatServiceImplFileName("%sServiceImp")
    .build();
1
2
3
4
5
6
7

# 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 实现类文件名称
new StrategyConfig.Builder()
    .mapperBuilder()
    .superClass(BaseMapper.class)
    .enableMapperAnnotation()
    .enableBaseResultMap()
    .enableBaseColumnList()
    .cache(MyMapperCache.class)
    .formatMapperFileName("%sDao")
    .formatXmlFileName("%sXml")
    .build();
1
2
3
4
5
6
7
8
9
10

# 自定义模版支持(DTO\VO等)配置

# Freemarker模版支持(DTO\VO等)配置

/**
 * 代码生成器支持自定义[DTO\VO等]模版
 */
public final class EnhanceFreemarkerTemplateEngine extends FreemarkerTemplateEngine {

    @Override
    protected void outputCustomFile(@NotNull Map<String, String> customFile, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
        String entityName = tableInfo.getEntityName();
        String otherPath = this.getPathInfo(OutputFile.other);
        customFile.forEach((key, value) -> {
            String fileName = String.format(otherPath + File.separator + entityName + "%s", key);
            this.outputFile(new File(fileName), objectMap, value);
        });
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

使用方式样例(其他细节参数请查看文档)

entityDTO.java.ftl 可参考源码内entity.java.ftl文件

FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author("abc") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .disableOpenDir() //禁止打开输出目录
                            .outputDir(finalProjectPath + "/src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.baomidou.mybatisplus.samples") // 设置父包名
                            .moduleName("test") // 设置父包模块名
                            .entity("model.entity") //设置entity包名
                            .other("model.dto") // 设置dto包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, finalProjectPath + "/src/main/resources/mapper")); // 设置mapperXml生成路径

                })
                .injectionConfig(consumer -> {
                    Map<String, String> customFile = new HashMap<>();
                    // DTO
                    customFile.put("DTO.java", "/templates/entityDTO.java.ftl");
                    consumer.customFile(customFile);
                });

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
帮助我们改善此页面! (opens new window)
上次更新: 2022/11/04, 09:16:38
使用配置
代码生成器配置旧

← 使用配置 代码生成器配置旧→

Theme by Vdoing | Copyright © 2016-2023 Team Baomidou | Sponsored by JetBrains | 渝ICP备2021000141号-1

友情链接:AiZuDa | D.Yang | NanCheung | apidocsBlog

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×