MyBatisPlus3.x中使用代碼生成器(全注釋)
場景
MyBaitsPlus3.x與2.x是不一樣的。這里使用3.0.1版本。
官方文檔
https://mp.baomidou.com/guide/generator.html
這里在IDEA上的SpringBoot項(xiàng)目中進(jìn)行代碼生成測試。
實(shí)現(xiàn)
添加依賴
添加 代碼生成器 依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version> </dependency>
注意:MyBatis-Plus 從 3.0.3 之后移除了代碼生成器與模板引擎的默認(rèn)依賴,需要手動添加相關(guān)依賴
<!-- 模板引擎velocity start-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- 模板引擎velocity end-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
模板引擎
MyBatis-Plus 支持 Velocity(默認(rèn))、Freemarker、Beetl,用戶可以選擇自己熟悉的模板引擎。
注意!如果您選擇了非默認(rèn)引擎,需要在 AutoGenerator 中 設(shè)置模板引擎。
AutoGenerator generator = new AutoGenerator(); // set freemarker engine generator.setTemplateEngine(new FreemarkerTemplateEngine()); // set beetl engine generator.setTemplateEngine(new BeetlTemplateEngine()); // set custom engine (reference class is your custom engine class) generator.setTemplateEngine(new CustomTemplateEngine());
編寫代碼
在test下新建單元測試類Generatortest.java

全局配置
//全局配置
GlobalConfig config = new GlobalConfig();
//設(shè)置是否支持AR模式
config.setActiveRecord(true)
//設(shè)置生成代碼的作者
.setAuthor("badaoliumangqizhi")
//設(shè)置輸出代碼的位置
.setOutputDir("f:output")
//.setEnableCache(false)// XML 二級緩存
//.setBaseResultMap(true)// XML ResultMap
//.setBaseColumnList(true)// XML columList
//.setKotlin(true) 是否生成 kotlin 代碼
//設(shè)置是否覆蓋原來的代碼
.setFileOverride(true);
數(shù)據(jù)源配置
//數(shù)據(jù)庫連接url
String dbUrl = "jdbc:sqlserver://;DatabaseName=";
//數(shù)據(jù)源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
//數(shù)據(jù)庫類型 枚舉
dataSourceConfig.setDbType(DbType.SQL_SERVER)
//設(shè)置url
.setUrl(dbUrl)
//設(shè)置用戶名
.setUsername("")
//設(shè)置密碼
.setPassword("")
//設(shè)置數(shù)據(jù)庫驅(qū)動
.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
// 自定義數(shù)據(jù)庫表字段類型轉(zhuǎn)換【可選】
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("轉(zhuǎn)換類型:" + fieldType);
//tinyint轉(zhuǎn)換成Boolean
if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
return DbColumnType.BOOLEAN;
}
//將數(shù)據(jù)庫中datetime轉(zhuǎn)換成date
if ( fieldType.toLowerCase().contains( "datetime" ) ) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
策略配置
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
//全局大寫命名是否開啟
.setCapitalMode(true)
//【實(shí)體】是否為lombok模型
.setEntityLombokModel(true)
//表名生成策略 下劃線轉(zhuǎn)駝峰
.setNaming(NamingStrategy.underline_to_camel)
//自動填充設(shè)置
//.setTableFillList(tableFillList)
//修改替換成你需要的表名,多個(gè)表名傳數(shù)組
.setInclude("wms_receive_order");
集成注入配置
//注入全局設(shè)置
new AutoGenerator().setGlobalConfig(config)
//注入數(shù)據(jù)源配置
.setDataSource(dataSourceConfig)
//注入策略配置
.setStrategy(strategyConfig)
//設(shè)置包名信息
.setPackageInfo(
new PackageConfig()
//提取公共父級包名
.setParent("com.badao.bus.sys")
//設(shè)置controller信息
.setController("controller")
//設(shè)置實(shí)體類信息
.setEntity("entity")
)
//設(shè)置自定義模板
.setTemplate(
new TemplateConfig()
//.setXml(null)//指定自定義模板路徑, 位置:/resources/templates/entity2.java.ftl(或者是.vm)
//注意不要帶上.ftl(或者是.vm), 會根據(jù)使用的模板引擎自動識別
// 自定義模板配置,模板可以參考源碼 /mybatis-plus/src/main/resources/template 使用 copy
// 至您項(xiàng)目 src/main/resources/template 目錄下,模板名稱也可自定義如下配置:
// .setController("...");
// .setEntity("...");
// .setMapper("...");
// .setXml("...");
// .setService("...");
.setServiceImpl("templates/serviceImpl.java")
)
//開始執(zhí)行代碼生成
.execute();
}
完整生成器代碼
package com.ws.test.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import org.junit.Test;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.List;
/**
* Created by badado on 2019/4/25.
*/
public class Generatortest {
@Test
public void generateTest(){
//全局配置
GlobalConfig config = new GlobalConfig();
//設(shè)置是否支持AR模式
config.setActiveRecord(true)
//設(shè)置生成代碼的作者
.setAuthor("badaoliumangqizhi")
//設(shè)置輸出代碼的位置
.setOutputDir("f:output")
//.setEnableCache(false)// XML 二級緩存
//.setBaseResultMap(true)// XML ResultMap
//.setBaseColumnList(true)// XML columList
//.setKotlin(true) 是否生成 kotlin 代碼
//設(shè)置是否覆蓋原來的代碼
.setFileOverride(true);
//******************************數(shù)據(jù)源配置***************************************
//數(shù)據(jù)庫連接url
String dbUrl = "jdbc:sqlserver://;DatabaseName=";
//數(shù)據(jù)源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
//數(shù)據(jù)庫類型 枚舉
dataSourceConfig.setDbType(DbType.SQL_SERVER)
//設(shè)置url
.setUrl(dbUrl)
//設(shè)置用戶名
.setUsername("")
//設(shè)置密碼
.setPassword("")
//設(shè)置數(shù)據(jù)庫驅(qū)動
.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
// 自定義數(shù)據(jù)庫表字段類型轉(zhuǎn)換【可選】
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("轉(zhuǎn)換類型:" + fieldType);
//tinyint轉(zhuǎn)換成Boolean
if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
return DbColumnType.BOOLEAN;
}
//將數(shù)據(jù)庫中datetime轉(zhuǎn)換成date
if ( fieldType.toLowerCase().contains( "datetime" ) ) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
//******************************策略配置******************************************************
// 自定義需要填充的字段 數(shù)據(jù)庫中的字段
List<TableFill> tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));
tableFillList.add(new TableFill("gmt_creat", FieldFill.INSERT));
tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
//全局大寫命名是否開啟
.setCapitalMode(true)
//【實(shí)體】是否為lombok模型
.setEntityLombokModel(true)
//表名生成策略 下劃線轉(zhuǎn)駝峰
.setNaming(NamingStrategy.underline_to_camel)
//自動填充設(shè)置
.setTableFillList(tableFillList)
//修改替換成你需要的表名,多個(gè)表名傳數(shù)組
.setInclude("wms_receive_order");
//集成注入設(shè)置
//注入全局設(shè)置
new AutoGenerator().setGlobalConfig(config)
//注入數(shù)據(jù)源配置
.setDataSource(dataSourceConfig)
//注入策略配置
.setStrategy(strategyConfig)
//設(shè)置包名信息
.setPackageInfo(
new PackageConfig()
//提取公共父級包名
.setParent("com.badao.bus.sys")
//設(shè)置controller信息
.setController("controller")
//設(shè)置實(shí)體類信息
.setEntity("entity")
)
//設(shè)置自定義模板
.setTemplate(
new TemplateConfig()
//.setXml(null)//指定自定義模板路徑, 位置:/resources/templates/entity2.java.ftl(或者是.vm)
//注意不要帶上.ftl(或者是.vm), 會根據(jù)使用的模板引擎自動識別
// 自定義模板配置,模板可以參考源碼 /mybatis-plus/src/main/resources/template 使用 copy
// 至您項(xiàng)目 src/main/resources/template 目錄下,模板名稱也可自定義如下配置:
// .setController("...");
// .setEntity("...");
// .setMapper("...");
// .setXml("...");
// .setService("...");
.setServiceImpl("templates/serviceImpl.java")
)
//開始執(zhí)行代碼生成
.execute();
}
}
效果
運(yùn)行測試

生成成功后會自動彈出生成代碼的目錄

到此這篇關(guān)于MyBatisPlus3.x中使用代碼生成器(全注釋)的文章就介紹到這了,更多相關(guān)MyBatisPlus3.x代碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot掃描引入jar包的service等組件方式
這篇文章主要介紹了springboot掃描引入jar包的service等組件方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot工程打包與運(yùn)行的實(shí)現(xiàn)詳解
本文主要介紹了SpringBoot工程的打包與運(yùn)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Java編寫實(shí)現(xiàn)坦克大戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了Java編寫實(shí)現(xiàn)坦克大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
RabbitMQ實(shí)現(xiàn)延時(shí)消息的兩種方法實(shí)戰(zhàn)教程
這篇文章主要介紹了RabbitMQ實(shí)現(xiàn)延時(shí)消息的兩種方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)
這篇文章主要介紹了Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析,結(jié)合實(shí)例形式較為詳細(xì)的分析說明了jdk1.4,jdk1.5和jdk1.6版本的使用區(qū)別,需要的朋友可以參考下2015-12-12

