{"id":18524227,"url":"https://github.com/baomidou/generator","last_synced_at":"2025-05-16T04:05:12.341Z","repository":{"id":37346796,"uuid":"304044857","full_name":"baomidou/generator","owner":"baomidou","description":"Any Code generator","archived":false,"fork":false,"pushed_at":"2023-04-05T18:00:17.000Z","size":18151,"stargazers_count":575,"open_issues_count":2,"forks_count":536,"subscribers_count":14,"default_branch":"develop","last_synced_at":"2025-04-19T05:07:25.201Z","etag":null,"topics":["codegen","generator"],"latest_commit_sha":null,"homepage":"https://baomidou.com/pages/779a6e/","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baomidou.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-14T14:42:51.000Z","updated_at":"2025-04-02T16:07:31.000Z","dependencies_parsed_at":"2024-11-06T17:45:00.748Z","dependency_job_id":"5621601f-4312-4859-bbae-70958b8b93a0","html_url":"https://github.com/baomidou/generator","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baomidou%2Fgenerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baomidou%2Fgenerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baomidou%2Fgenerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baomidou%2Fgenerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baomidou","download_url":"https://codeload.github.com/baomidou/generator/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464895,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codegen","generator"],"created_at":"2024-11-06T17:40:04.463Z","updated_at":"2025-05-16T04:05:12.049Z","avatar_url":"https://github.com/baomidou.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[官方文档](https://baomidou.com)\n\n[Mybatis-Plus](https://gitee.com/baomidou/mybatis-plus)\n\n[企业版 Mybatis-Mate 高级特性](https://gitee.com/baomidou/mybatis-mate-examples)\n\n### 安装\n\n``` xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.baomidou\u003c/groupId\u003e\n    \u003cartifactId\u003emybatis-plus-generator\u003c/artifactId\u003e\n    \u003cversion\u003eLatest Version\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n[generator 版本查询](https://search.maven.org/search?q=a:mybatis-plus-generator)\n\n### 使用（以下教程仅适用 3.5.1 以上版本，对历史版本的不兼容）\n\n#### 快速生成\n\n```java\nFastAutoGenerator.create(\"url\", \"username\", \"password\")\n\t.globalConfig(builder -\u003e {\n\t\tbuilder.author(\"baomidou\") // 设置作者\n            .enableSwagger() // 开启 swagger 模式\n\t\t\t.outputDir(\"D://\"); // 指定输出目录\n\t})\n\t.packageConfig(builder -\u003e {\n\t\tbuilder.parent(\"com.baomidou.mybatisplus.samples.generator\") // 设置父包名\n\t\t\t.moduleName(\"system\") // 设置父包模块名\n            .pathInfo(Collections.singletonMap(OutputFile.xml, \"D://\")); // 设置mapperXml生成路径\n\t})\n\t.strategyConfig(builder -\u003e {\n\t\tbuilder.addInclude(\"t_simple\") // 设置需要生成的表名\n\t\t\t.addTablePrefix(\"t_\", \"c_\"); // 设置过滤表前缀\n\t})\n\t.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板\n\t.execute();\n```\n\n#### 交互式生成\n\n```java\nFastAutoGenerator.create(\"url\", \"username\", \"password\")\n    // 全局配置\n    .globalConfig((scanner, builder) -\u003e builder.author(scanner.apply(\"请输入作者名称？\")))\n    // 包配置\n    .packageConfig((scanner, builder) -\u003e builder.parent(scanner.apply(\"请输入包名？\")))\n    // 策略配置\n    .strategyConfig(builder -\u003e builder.addInclude(\"t_simple\"))\n    /*\n        模板引擎配置，默认 Velocity 可选模板引擎 Beetl 或 Freemarker 或 Enjoy\n       .templateEngine(new BeetlTemplateEngine())\n       .templateEngine(new FreemarkerTemplateEngine())\n       .templateEngine(new EnjoyTemplateEngine())\n     */\n    .execute();\n```\n\n* `更多例子可查看test包下面的samples`\n* [H2CodeGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/H2CodeGeneratorTest.java)\n* [MySQLGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/MySQLGeneratorTest.java)\n* [OracleGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/OracleGeneratorTest.java)\n* [PostgreSQLGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/PostgreSQLGeneratorTest.java)\n* [DMGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/DMGeneratorTest.java)\n* [FastAutoGeneratorTest](https://github.com/baomidou/generator/blob/develop/mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/FastAutoGeneratorTest.java)\n\n### 说明\n\n#### 数据库配置(DataSourceConfig)\n\n##### 基础配置\n\n| 属性          | 说明       | 示例 |\n| --------------- | ---------- | ------ |\n| url             | jdbc路径   | jdbc:mysql://127.0.0.1:3306/mybatis-plus |\n| username        | 数据库账号 | root  |\n| password        | 数据库密码 | 123456 |\n\n```java\nnew DataSourceConfig.Builder(\"jdbc:mysql://127.0.0.1:3306/mybatis-plus\",\"root\",\"123456\")\n    .build();\n```\n##### 可选配置\n\n| 方法         | 说明                         | 示例                                       |\n| --------------- | ---------------------------- | ------------------------------------- |\n| dbQuery(IDbQuery)         | 数据库查询                   | new MySqlQuery()              |\n| schema(String)          | 数据库schema(部分数据库适用) | mybatis-plus                      |\n| typeConvert(ITypeConvert)     | 数据库类型转换器（配合SQLQuery）| new MySqlTypeConvert()    |\n| keyWordsHandler(IKeyWordsHandler) | 数据库关键字处理器          | new MySqlKeyWordsHandler()|\n| databaseQueryClass(IDatabaseQuery) | 数据库查询方式          | SQLQuery.class            |\n| typeConvertHandler(ITypeConvertHandler) | 数据库类型转换器（配合DefaultQuery）   |        |\n| addConnectionProperty(String key, String value) | 增加数据库连接属性 |         |\n\n```java\nnew DataSourceConfig.Builder(\"jdbc:mysql://127.0.0.1:3306/mybatis-plus\",\"root\",\"123456\")\n    .dbQuery(new MySqlQuery())\n    .schema(\"mybatis-plus\")\n    .typeConvert(new MySqlTypeConvert())\n    .keyWordsHandler(new MySqlKeyWordsHandler())\n    .databaseQueryClass(SQLQuery.class)\n    .addConnectionProperty(\"remarks\", \"true\")\n    .build();\n```\n\n#### 全局配置(GlobalConfig)\n\n| 方法                | 说明              | 示例                                                    |\n| ------------------- | ----------------- | ------------------------------------------------------- |\n| disableOpenDir      | 禁止打开输出目录  | 默认值:true                                             |\n| outputDir(String)   | 指定输出目录      | /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp |\n| author(String)      | 作者名            | baomidou 默认值:作者                                    |\n| enableKotlin        | 开启 kotlin 模式  | 默认值:false                                            |\n| enableSwagger       | 开启 swagger 模式 | 默认值:false                                            |\n| enableSpringdoc       | 开启 springdoc 模式 | 默认值:false                                            |\n| dateType(DateType)  | 时间策略          | DateType.ONLY_DATE 默认值: DateType.TIME_PACK           |\n| commentDate(String) | 注释日期          | 默认值: yyyy-MM-dd                                      |\n\n```java\nnew GlobalConfig.Builder()\n    .outputDir(\"/opt/baomidou\")\n    .author(\"baomidou\")\n    .enableKotlin()\n    .enableSwagger()\n    .dateType(DateType.TIME_PACK)\n    .commentDate(\"yyyy-MM-dd\")\n    .build();\n```\n\n#### 包配置(PackageConfig)\n\n| 方法                              | 说明              | 示例                                                   |\n| --------------------------------- | ----------------- | ------------------------------------------------------ |\n| parent(String)                    | 父包名            | 默认值:com.baomidou                                    |\n| moduleName(String)                | 父包模块名        | 默认值:无                                              |\n| entity(String)                    | Entity 包名       | 默认值:entity                                          |\n| service(String)                   | Service 包名      | 默认值:service                                         |\n| serviceImpl(String)               | Service Impl 包名 | 默认值:service.impl                                    |\n| mapper(String)                    | Mapper 包名       | 默认值:mapper                                          |\n| xml(String)                       | Mapper XML 包名   | 默认值:mapper.xml                                      |\n| controller(String)                | Controller 包名   | 默认值:controller                                      |\n| pathInfo(Map\u003cOutputFile, String\u003e) | 路径配置信息      | Collections.singletonMap(OutputFile.xml, \"D://\") |\n\n```java\nnew PackageConfig.Builder()\n    .parent(\"com.baomidou.mybatisplus.samples.generator\")\n    .moduleName(\"sys\")\n    .entity(\"po\")\n    .service(\"service\")\n    .serviceImpl(\"service.impl\")\n    .mapper(\"mapper\")\n    .xml(\"mapper.xml\")\n    .controller(\"controller\")\n    .pathInfo(Collections.singletonMap(OutputFile.xml, \"D://\")\n    .build();\n```\n\n#### 模板配置(TemplateConfig)\n\n| 方法                     | 说明                      | 示例                        |\n| ------------------------ | ------------------------- | --------------------------- |\n| disable                  | 禁用所有模板              |                             |\n| disable(TemplateType...) | 禁用模板                  | TemplateType.ENTITY         |\n| entity(String)           | 设置实体模板路径(JAVA)    | /templates/entity.java      |\n| entityKt(String)         | 设置实体模板路径(kotlin)  | /templates/entity.java      |\n| service(String)          | 设置 service 模板路径     | /templates/service.java     |\n| serviceImpl(String)      | 设置 serviceImpl 模板路径 | /templates/serviceImpl.java |\n| mapper(String)           | 设置 mapper 模板路径      | /templates/mapper.java      |\n| xml(String)              | 设置 mapperXml 模板路径   | /templates/mapper.xml       |\n| controller(String)       | 设置 controller 模板路径  | /templates/controller.java  |\n\n```java\nnew TemplateConfig.Builder()\n    .disable(TemplateType.ENTITY)\n    .entity(\"/templates/entity.java\")\n    .service(\"/templates/service.java\")\n    .serviceImpl(\"/templates/serviceImpl.java\")\n    .mapper(\"/templates/mapper.java\")\n    .xml(\"/templates/mapper.xml\")\n    .controller(\"/templates/controller.java\")\n    .build();\n```\n\n#### 注入配置(InjectionConfig)\n\n| 方法                     | 说明                    | 示例                        |\n| ------------------------ |-----------------------| --------------------------- |\n| beforeOutputFile(BiConsumer\u003cTableInfo, Map\u003cString, Object\u003e\u003e)| 输出文件之前消费者             |                                                             |\n| customMap(Map\u003cString, Object\u003e)                              | 自定义配置 Map 对象          | Collections.singletonMap(\"test\", \"baomidou\")                |\n| customFile(Map\u003cString, String\u003e)                             | 自定义配置模板文件（Map）        | Collections.singletonMap(\"DTO.java\", \"/templates/dto.java.vm\")  |\n| customFile(CustomFile)                             | 自定义配置模板文件（CustomFile） | new CustomFile.Builder().fileName(\"DTO.java\").templatePath(\"/templates/dto.java.vm\").packageName(\"dto\").build()  |\n| customFile(List\u003cCustomFile\u003e)              | 自定义配置模板文件（List）       |        |\n| customFile(Consumer\u003cCustomFile.Builder\u003e)       | 自定义配置模板文件（lambda）     |   |\n\n```java\nnew InjectionConfig.Builder()\n    .beforeOutputFile((tableInfo, objectMap) -\u003e {\n    System.out.println(\"tableInfo: \" + tableInfo.getEntityName() + \" objectMap: \" + objectMap.size());\n    })\n    .customMap(Collections.singletonMap(\"test\", \"baomidou\"))\n    .customFile(Collections.singletonMap(\"DTO.java\", \"/templates/dto.java.vm\"))\n    .customFile(new CustomFile.Builder().fileName(\"DTO.java\").templatePath(\"/templates/dto.java.vm\").packageName(\"dto\").build())\n    .build();\n```\n\n#### 策略配置(StrategyConfig)\n\n| 方法                      | 说明                     | 示例                                                              |\n| ------------------------- | ------------------------ | ----------------------------------------------------------------- |\n| enableCapitalMode         | 开启大写命名             | 默认值:false                                                      |\n| enableSkipView            | 开启跳过视图             | 默认值:false                                                      |\n| disableSqlFilter          | 禁用 sql 过滤            | 默认值:true，语法不能支持使用 sql 过滤表的话，可以考虑关闭此开关        |\n| enableSchema              | 启用 schema             | 默认值:false，多 schema 场景的时候打开                              |\n| likeTable(LikeTable)      | 模糊表匹配(sql 过滤)     | likeTable 与 notLikeTable 只能配置一项                            |\n| notLikeTable(LikeTable)   | 模糊表排除(sql 过滤)     | likeTable 与 notLikeTable 只能配置一项                            |\n| addInclude(String...)     | 增加表匹配(内存过滤)     | include 与 exclude 只能配置一项                                   |\n| addExclude(String...)     | 增加表排除匹配(内存过滤) | include 与 exclude 只能配置一项                                   |\n| addTablePrefix(String...) | 增加过滤表前缀           |                                                                   |\n| addTableSuffix(String...) | 增加过滤表后缀           |                                                                   |\n| addFieldPrefix(String...) | 增加过滤字段前缀         |                                                                   |\n| addFieldSuffix(String...) | 增加过滤字段后缀         |                                                                   |\n| entityBuilder             | 实体策略配置             |                                                                   |\n| controllerBuilder         | controller 策略配置      |                                                                   |\n| mapperBuilder             | mapper 策略配置          |                                                                   |\n| serviceBuilder            | service 策略配置         |                                                                   |\n\n```java\nnew StrategyConfig.Builder()\n    .enableCapitalMode()\n    .enableSkipView()\n    .disableSqlFilter()\n    .likeTable(new LikeTable(\"USER\"))\n    .addInclude(\"t_simple\")\n    .addTablePrefix(\"t_\", \"c_\")\n    .addFieldSuffix(\"_flag\")\n    .build();\n```\n\n##### Entity策略配置\n\n| 方法                               | 说明                              | 示例                                                   |\n| ---------------------------------- | --------------------------------- | ------------------------------------------------------ |\n| nameConvert(INameConvert)          | 名称转换实现                      |                                                        |\n| superClass(Class\u003c?\u003e)               | 设置父类                          | BaseEntity.class                                       |\n| superClass(String)                 | 设置父类                          | com.baomidou.global.BaseEntity                         |\n| disableSerialVersionUID            | 禁用生成 serialVersionUID         | 默认值:true                                            |\n| enableColumnConstant               | 开启生成字段常量                  | 默认值:false                                           |\n| enableChainModel                   | 开启链式模型                      | 默认值:false                                           |\n| enableLombok                       | 开启 lombok 模型                  | 默认值:false                                           |\n| enableRemoveIsPrefix               | 开启 Boolean 类型字段移除 is 前缀 | 默认值:false                                           |\n| enableTableFieldAnnotation         | 开启生成实体时生成字段注解        | 默认值:false                                           |\n| enableActiveRecord                 | 开启 ActiveRecord 模型            | 默认值:false                                           |\n| enableFileOverride                 | 覆盖已有文件            | 默认值:false                                           |\n| versionColumnName(String)          | 乐观锁字段名(数据库)              |                                                        |\n| versionPropertyName(String)        | 乐观锁属性名(实体)                |                                                        |\n| logicDeleteColumnName(String)      | 逻辑删除字段名(数据库)            |                                                        |\n| logicDeletePropertyName(String)    | 逻辑删除属性名(实体)              |                                                        |\n| naming                             | 数据库表映射到实体的命名策略      | 默认下划线转驼峰命名:NamingStrategy.underline_to_camel |\n| columnNaming                       | 数据库表字段映射到实体的命名策略  | 默认为 null，未指定按照 naming 执行                    |\n| addSuperEntityColumns(String...)   | 添加父类公共字段                  |                                                        |\n| addIgnoreColumns(String...)        | 添加忽略字段                      |                                                        |\n| addTableFills(IFill...)            | 添加表字段填充                    |                                                        |\n| addTableFills(List\u003cIFill\u003e)         | 添加表字段填充                    |                                                        |\n| idType(IdType)                     | 全局主键类型                      |                                                        |\n| convertFileName(ConverterFileName) | 转换文件名称                      |                                                        |\n| formatFileName(String)             | 格式化文件名称                    |                                                        |\n\n```java\nnew StrategyConfig.Builder()\n    .entityBuilder()\n    .superClass(BaseEntity.class)\n    .disableSerialVersionUID()\n    .enableChainModel()\n    .enableLombok()\n    .enableRemoveIsPrefix()\n    .enableTableFieldAnnotation()\n    .enableActiveRecord()\n    .versionColumnName(\"version\")\n    .versionPropertyName(\"version\")\n    .logicDeleteColumnName(\"deleted\")\n    .logicDeletePropertyName(\"deleteFlag\")\n    .naming(NamingStrategy.no_change)\n    .columnNaming(NamingStrategy.underline_to_camel)\n    .addSuperEntityColumns(\"id\", \"created_by\", \"created_time\", \"updated_by\", \"updated_time\")\n    .addIgnoreColumns(\"age\")\n    .addTableFills(new Column(\"create_time\", FieldFill.INSERT))\n    .addTableFills(new Property(\"updateTime\", FieldFill.INSERT_UPDATE))\n    .idType(IdType.AUTO)\n    .formatFileName(\"%sEntity\")\n    .build();\n```\n\n##### Controller策略配置\n\n| 方法                               | 说明                           | 示例                               |\n| ---------------------------------- | ------------------------------ | ---------------------------------- |\n| superClass(Class\u003c?\u003e)               | 设置父类                       | BaseController.class               |\n| superClass(String)                 | 设置父类                       | com.baomidou.global.BaseController |\n| enableHyphenStyle                  | 开启驼峰转连字符               | 默认值:false                       |\n| enableRestStyle                    | 开启生成@RestController 控制器 | 默认值:false                       |\n| enableFileOverride                 | 覆盖已有文件            | 默认值:false                                           |\n| convertFileName(ConverterFileName) | 转换文件名称                   |                                    |\n| formatFileName(String)             | 格式化文件名称                 |                                    |\n\n```java\nnew StrategyConfig.Builder()\n    .controllerBuilder()\n    .superClass(BaseController.class)\n    .enableHyphenStyle()\n    .enableRestStyle()\n    .formatFileName(\"%sAction\")\n    .build();\n```\n\n##### Service策略配置\n\n| 方法                                          | 说明                          | 示例                                |\n| --------------------------------------------- | ----------------------------- | ----------------------------------- |\n| enableFileOverride                 | 覆盖已有文件            | 默认值:false                                           |\n| superServiceClass(Class\u003c?\u003e)                   | 设置 service 接口父类         | BaseService.class                   |\n| superServiceClass(String)                     | 设置 service 接口父类         | com.baomidou.global.BaseService     |\n| superServiceImplClass(Class\u003c?\u003e)               | 设置 service 实现类父类       | BaseServiceImpl.class               |\n| superServiceImplClass(String)                 | 设置 service 实现类父类       | com.baomidou.global.BaseServiceImpl |\n| convertServiceFileName(ConverterFileName)     | 转换 service 接口文件名称     |                                     |\n| convertServiceImplFileName(ConverterFileName) | 转换 service 实现类文件名称   |                                     |\n| formatServiceFileName(String)                 | 格式化 service 接口文件名称   |                                     |\n| formatServiceImplFileName(String)             | 格式化 service 实现类文件名称 |                                     |\n\n```java\nnew StrategyConfig.Builder()\n    .serviceBuilder()\n    .superServiceClass(BaseService.class)\n    .superServiceImplClass(BaseServiceImpl.class)\n    .formatServiceFileName(\"%sService\")\n    .formatServiceImplFileName(\"%sServiceImp\")\n    .build();\n```\n\n##### Mapper策略配置\n\n| 方法                                     | 说明                      | 示例                           |\n| ---------------------------------------- | ------------------------- | ------------------------------ |\n| superClass(Class\u003c?\u003e)                     | 设置父类                  | BaseMapper.class               |\n| superClass(String)                       | 设置父类                  | com.baomidou.global.BaseMapper |\n| enableMapperAnnotation                   | 开启 @Mapper 注解         | 默认值:false                   |\n| enableBaseResultMap                      | 启用 BaseResultMap 生成   | 默认值:false                   |\n| enableBaseColumnList                     | 启用 BaseColumnList       | 默认值:false                   |\n| enableFileOverride                 | 覆盖已有文件            | 默认值:false                                           |\n| cache(Class\u003c? extends Cache\u003e)            | 设置缓存实现类            | MyMapperCache.class            |\n| convertMapperFileName(ConverterFileName) | 转换 mapper 类文件名称    |                                |\n| convertXmlFileName(ConverterFileName)    | 转换 xml 文件名称         |                                |\n| formatMapperFileName(String)             | 格式化 mapper 文件名称    |                                |\n| formatXmlFileName(String)                | 格式化 xml 实现类文件名称 |                                |\n\n```java\nnew StrategyConfig.Builder()\n    .mapperBuilder()\n    .superClass(BaseMapper.class)\n    .enableMapperAnnotation()\n    .enableBaseResultMap()\n    .enableBaseColumnList()\n    .cache(MyMapperCache.class)\n    .formatMapperFileName(\"%sDao\")\n    .formatXmlFileName(\"%sXml\")\n    .build();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaomidou%2Fgenerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaomidou%2Fgenerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaomidou%2Fgenerator/lists"}