# generator **Repository Path**: luodash/generator ## Basic Information - **Project Name**: generator - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-09 - **Last Updated**: 2025-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [官方文档](https://baomidou.com) [Mybatis-Plus](https://gitee.com/baomidou/mybatis-plus) [企业版 Mybatis-Mate 高级特性](https://gitee.com/baomidou/mybatis-mate-examples) ### 安装 ``` xml com.baomidou mybatis-plus-generator Latest Version ``` [generator 版本查询](https://search.maven.org/search?q=a:mybatis-plus-generator) ### 使用(以下教程仅适用 3.5.1 以上版本,对历史版本的不兼容) #### 快速生成 ```java FastAutoGenerator.create("url", "username", "password") .globalConfig(builder -> { builder.author("baomidou") // 设置作者 .enableSwagger() // 开启 swagger 模式 .fileOverride() // 覆盖已生成文件 .outputDir("D://"); // 指定输出目录 }) .packageConfig(builder -> { builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名 .moduleName("system") // 设置父包模块名 .pathInfo(Collections.singletonMap(OutputFile.xml, "D://")); // 设置mapperXml生成路径 }) .strategyConfig(builder -> { builder.addInclude("t_simple") // 设置需要生成的表名 .addTablePrefix("t_", "c_"); // 设置过滤表前缀 }) .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); ``` #### 交互式生成 ```java FastAutoGenerator.create(DATA_SOURCE_CONFIG) // 全局配置 .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride()) // 包配置 .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?"))) // 策略配置 .strategyConfig(builder -> builder.addInclude("t_simple")) /* 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker .templateEngine(new BeetlTemplateEngine()) .templateEngine(new FreemarkerTemplateEngine()) */ .execute(); ``` * `更多例子可查看test包下面的samples` * [H2CodeGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/H2CodeGeneratorTest.java) * [FastAutoGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/FastAutoGeneratorTest.java) ### 说明 #### 数据库配置(DataSourceConfig) ##### 基础配置 | 属性 | 说明 | 示例 | | --------------- | ---------- | ------ | | url | jdbc路径 | jdbc:mysql://127.0.0.1:3306/mybatis-plus | | username | 数据库账号 | root | | password | 数据库密码 | 123456 | ```java new DataSourceConfig. Builder("jdbc:mysql://127.0.0.1:3306/mybatis-plus","root","123456").build(); ``` ##### 可选配置 | 方法 | 说明 | 示例 | | --------------- | ---------------------------- | ------------------------------------- | | dbQuery(IDbQuery) | 数据库查询 | new MySqlQuery() | | schema(String) | 数据库schema(部分数据库适用) | mybatis-plus | | typeConvert(ITypeConvert) | 数据库类型转换器 | new MySqlTypeConvert() | | keyWordsHandler(IKeyWordsHandler) | 数据库关键字处理器 | new MySqlKeyWordsHandler() | ```java 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(); ``` #### 全局配置(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 | ```java new GlobalConfig.Builder(). .fileOverride() .outputDir("/opt/baomidou") .author("baomidou") .enableKotlin() .enableSwagger() .dateType(DateType.TIME_PACK) .commentDate("yyyy-MM-dd") .build(); ``` #### 包配置(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) | 路径配置信息 | Collections.singletonMap(OutputFile.xml, "D://") | ```java 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.xml, "D://") .build(); ``` #### 模板配置(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 | | xml(String) | 设置 mapperXml 模板路径 | /templates/mapper.xml | | controller(String) | 设置 controller 模板路径 | /templates/controller.java | ```java new TemplateConfig.Builder() .disable(TemplateType.ENTITY) .entity("/templates/entity.java") .service("/templates/service.java") .serviceImpl("/templates/serviceImpl.java") .mapper("/templates/mapper.java") .xml("/templates/mapper.xml") .controller("/templates/controller.java") .build(); ``` #### 注入配置(InjectionConfig) | 方法 | 说明 | 示例 | | ----------------------------------------------------------- | ----------------- | ----------------------------------------------------------- | | beforeOutputFile(BiConsumer>)| 输出文件之前消费者 | | | customMap(Map) | 自定义配置 Map 对象 | Collections.singletonMap("test", "baomidou") | | customFile(Map) | 自定义配置模板文件 | Collections.singletonMap("test.txt", "/templates/test.vm") | ```java 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(); ``` #### 策略配置(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 策略配置 | | ```java new StrategyConfig.Builder() .enableCapitalMode() .enableSkipView() .disableSqlFilter() .likeTable(new LikeTable("USER")) .addInclude("t_simple") .addTablePrefix("t_", "c_") .addFieldSuffix("_flag") .build(); ``` ##### 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) | 格式化文件名称 | | ```java 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(); ``` ##### Controller策略配置 | 方法 | 说明 | 示例 | | ---------------------------------- | ------------------------------ | ---------------------------------- | | superClass(Class) | 设置父类 | BaseController.class | | superClass(String) | 设置父类 | com.baomidou.global.BaseController | | enableHyphenStyle | 开启驼峰转连字符 | 默认值:false | | enableRestStyle | 开启生成@RestController 控制器 | 默认值:false | | convertFileName(ConverterFileName) | 转换文件名称 | | | formatFileName(String) | 格式化文件名称 | | ```java new StrategyConfig.Builder() .controllerBuilder() .superClass(BaseController.class) .enableHyphenStyle() .enableRestStyle() .formatFileName("%sAction") .build(); ``` ##### 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 实现类文件名称 | | ```java new StrategyConfig.Builder() .serviceBuilder() .superServiceClass(BaseService.class) .superServiceImplClass(BaseServiceImpl.class) .formatServiceFileName("%sService") .formatServiceImplFileName("%sServiceImp") .build(); ``` ##### Mapper策略配置 | 方法 | 说明 | 示例 | | ---------------------------------------- | ------------------------- | ------------------------------ | | superClass(Class) | 设置父类 | BaseMapper.class | | superClass(String) | 设置父类 | com.baomidou.global.BaseMapper | | enableMapperAnnotation | 开启 @Mapper 注解 | 默认值:false | | enableBaseResultMap | 启用 BaseResultMap 生成 | 默认值:false | | enableBaseColumnList | 启用 BaseColumnList | 默认值:false | | cache(Class) | 设置缓存实现类 | MyMapperCache.class | | convertMapperFileName(ConverterFileName) | 转换 mapper 类文件名称 | | | convertXmlFileName(ConverterFileName) | 转换 xml 文件名称 | | | formatMapperFileName(String) | 格式化 mapper 文件名称 | | | formatXmlFileName(String) | 格式化 xml 实现类文件名称 | | ```java new StrategyConfig.Builder() .mapperBuilder() .superClass(BaseMapper.class) .enableMapperAnnotation() .enableBaseResultMap() .enableBaseColumnList() .cache(MyMapperCache.class) .formatMapperFileName("%sDao") .formatXmlFileName("%sXml") .build(); ```