mybatis-plus代碼生成器及配置


1.代碼生成器CODE

查看代碼
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

/**
 * @author huang
 * @version 1.0
 * @description:
 * @date 2022-03-23 8:10
 */
public class MybatisPlusFastAutoGenerator {

    private static String url = "jdbc:mysql://8.0.0.0:3306/root";
    private static String userName = "mysql";
    private static String password = "mysql";
    private static String table = "user";

    public static void main(String[] args) {

        FastAutoGenerator.create(url,userName,password)
                .globalConfig(
                builder -> {
                    builder.author("huang") // 設置作者
                            .enableSwagger() // 開啟swagger模式
                            .fileOverride() // 覆蓋已生成的文件
                            .outputDir("E:\\gitcode\\swagger"); // 指定輸出目錄
                })
                .packageConfig(builder -> {
                    builder.parent("com.swagger") // 設置父包名
                            .moduleName("swaggerdemo") // 設置父包模塊名

                            .pathInfo(Collections.singletonMap(OutputFile.mapper,"E:\\gitcode\\swagger\\com\\swagger\\swaggerdemo\\mapper")); // 設置mapperXml文件生成路徑
                })
                .strategyConfig(builder -> {
                    builder.addInclude(table); // 設置需要生產的表明
                    //.addTablePrefix(""); // 設置過濾表前綴
                })
                //.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默認的是Velocity引擎模板
                .execute();
    }
}

2.代碼生成器配置

數據庫配置(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();
 

#可選配置

方法 說明 示例
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();
 

#全局配置(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();
 

#包配置(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();
 

#模板配置(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();
 

#注入配置(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();
 

#策略配置(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();
 

#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();
 

#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();
 

#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();
 

#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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM