mybatis-plus代碼生成器

1打洼、AutoGenerator 簡(jiǎn)介

AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過(guò) AutoGenerator 可以快速生成 Entity逆粹、Mapper募疮、Mapper XML、Service僻弹、Controller 等各個(gè)模塊的代碼阿浓,極大的提升了開(kāi)發(fā)效率。
與 mybatis 中的 mybatis-generator-core 類似蹋绽。

2芭毙、添加依賴
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.1.tmp</version>
</dependency>
<!-- 添加 模板引擎 依賴 -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>
3、代碼分析
Step1:

創(chuàng)建一個(gè) 代碼生成器卸耘。用于生成代碼退敦。
此處不用修改。

// Step1:代碼生成器
AutoGenerator mpg = new AutoGenerator();
Step2:

配置全局信息蚣抗。指定代碼輸出路徑苛聘,以及包名、作者等信息。
此處按需添加设哗,projectPath 需要修改唱捣,setAuthor 需要修改。

// Step2:全局配置
GlobalConfig gc = new GlobalConfig();
// 填寫代碼生成的目錄(需要修改)
String projectPath = "E:\\myProject\\test\\test_mybatis_plus";
// 拼接出代碼最終輸出的目錄
gc.setOutputDir(projectPath + "/src/main/java");
// 配置開(kāi)發(fā)者信息(可選)(需要修改)
gc.setAuthor("lyh");
// 配置是否打開(kāi)目錄网梢,false 為不打開(kāi)(可選)
gc.setOpen(false);
// 實(shí)體屬性 Swagger2 注解震缭,添加 Swagger 依賴,開(kāi)啟 Swagger2 模式(可選)
//gc.setSwagger2(true);
// 重新生成文件時(shí)是否覆蓋战虏,false 表示不覆蓋(可選)
gc.setFileOverride(false);
// 配置主鍵生成策略拣宰,此處為 ASSIGN_ID(可選)
gc.setIdType(IdType.ASSIGN_ID);
// 配置日期類型,此處為 ONLY_DATE(可選)
gc.setDateType(DateType.ONLY_DATE);
// 默認(rèn)生成的 service 會(huì)有 I 前綴
gc.setServiceName("%sService");
mpg.setGlobalConfig(gc);
Step3:

配置數(shù)據(jù)源信息烦感。用于指定 需要生成代碼的 數(shù)據(jù)倉(cāng)庫(kù)巡社、數(shù)據(jù)表∈秩ぃ  
setUrl晌该、setDriverName、setUsername绿渣、setPassword 均需修改朝群。

// Step3:數(shù)據(jù)源配置(需要修改)
DataSourceConfig dsc = new DataSourceConfig();
// 配置數(shù)據(jù)庫(kù) url 地址
dsc.setUrl("jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8");
// dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定數(shù)據(jù)庫(kù)名
// 配置數(shù)據(jù)庫(kù)驅(qū)動(dòng)
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// 配置數(shù)據(jù)庫(kù)連接用戶名
dsc.setUsername("root");
// 配置數(shù)據(jù)庫(kù)連接密碼
dsc.setPassword("123456");
mpg.setDataSource(dsc);
Step4:

配置包信息≈蟹  
setParent姜胖、setModuleName 均需修改。其余按需求修改淀散。

// Step:4:包配置
PackageConfig pc = new PackageConfig();
// 配置父包名(需要修改)
pc.setParent("com.lyh.test");
// 配置模塊名(需要修改)
pc.setModuleName("test_mybatis_plus");
// 配置 entity 包名
pc.setEntity("entity");
// 配置 mapper 包名
pc.setMapper("mapper");
// 配置 service 包名
pc.setService("service");
// 配置 controller 包名
pc.setController("controller");
mpg.setPackageInfo(pc);
Step5:

配置數(shù)據(jù)表映射信息右莱。  
setInclude 需要修改档插,其余按實(shí)際開(kāi)發(fā)修改慢蜓。

// Step5:策略配置(數(shù)據(jù)庫(kù)表配置)
StrategyConfig strategy = new StrategyConfig();
// 指定表名(可以同時(shí)操作多個(gè)表,使用 , 隔開(kāi))(需要修改)
strategy.setInclude("test_mybatis_plus_user");
// 配置數(shù)據(jù)表與實(shí)體類名之間映射的策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 配置數(shù)據(jù)表的字段與實(shí)體類的屬性名之間映射的策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 配置 lombok 模式
strategy.setEntityLombokModel(true);
// 配置 rest 風(fēng)格的控制器(@RestController)
strategy.setRestControllerStyle(true);
// 配置駝峰轉(zhuǎn)連字符
strategy.setControllerMappingHyphenStyle(true);
// 配置表前綴阀捅,生成實(shí)體時(shí)去除表前綴
// 此處的表名為 test_mybatis_plus_user,模塊名為 test_mybatis_plus针余,去除前綴后剩下為 user饲鄙。
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
Step6:

執(zhí)行代碼生成操作。
此處不用修改圆雁。

// Step6:執(zhí)行代碼生成操作
mpg.execute();

完整代碼:

package com.test.test_mybatis_plus;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;

public class TestAutoGenerate {
   @Test
   public void autoGenerate() {
       // Step1:代碼生成器
       AutoGenerator mpg = new AutoGenerator();

       // Step2:全局配置
       GlobalConfig gc = new GlobalConfig();
       // 填寫代碼生成的目錄(需要修改)
       String projectPath = "E:\\myProject\\test\\test_mybatis_plus";
       // 拼接出代碼最終輸出的目錄
       gc.setOutputDir(projectPath + "/src/main/java");
       // 配置開(kāi)發(fā)者信息(可選)(需要修改)
       gc.setAuthor("lyh");
       // 配置是否打開(kāi)目錄忍级,false 為不打開(kāi)(可選)
       gc.setOpen(false);
       // 實(shí)體屬性 Swagger2 注解,添加 Swagger 依賴伪朽,開(kāi)啟 Swagger2 模式(可選)
       //gc.setSwagger2(true);
       // 重新生成文件時(shí)是否覆蓋轴咱,false 表示不覆蓋(可選)
       gc.setFileOverride(false);
       // 配置主鍵生成策略,此處為 ASSIGN_ID(可選)
       gc.setIdType(IdType.ASSIGN_ID);
       // 配置日期類型,此處為 ONLY_DATE(可選)
       gc.setDateType(DateType.ONLY_DATE);
       // 默認(rèn)生成的 service 會(huì)有 I 前綴
       gc.setServiceName("%sService");
       mpg.setGlobalConfig(gc);

       // Step3:數(shù)據(jù)源配置(需要修改)
       DataSourceConfig dsc = new DataSourceConfig();
       // 配置數(shù)據(jù)庫(kù) url 地址
       dsc.setUrl("jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8");
       // dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定數(shù)據(jù)庫(kù)名
       // 配置數(shù)據(jù)庫(kù)驅(qū)動(dòng)
       dsc.setDriverName("com.mysql.cj.jdbc.Driver");
       // 配置數(shù)據(jù)庫(kù)連接用戶名
       dsc.setUsername("root");
       // 配置數(shù)據(jù)庫(kù)連接密碼
       dsc.setPassword("123456");
       mpg.setDataSource(dsc);

       // Step:4:包配置
       PackageConfig pc = new PackageConfig();
       // 配置父包名(需要修改)
       pc.setParent("com.lyh.test");
       // 配置模塊名(需要修改)
       pc.setModuleName("test_mybatis_plus");
       // 配置 entity 包名
       pc.setEntity("entity");
       // 配置 mapper 包名
       pc.setMapper("mapper");
       // 配置 service 包名
       pc.setService("service");
       // 配置 controller 包名
       pc.setController("controller");
       mpg.setPackageInfo(pc);

       // Step5:策略配置(數(shù)據(jù)庫(kù)表配置)
       StrategyConfig strategy = new StrategyConfig();
       // 指定表名(可以同時(shí)操作多個(gè)表朴肺,使用 , 隔開(kāi))(需要修改)
       strategy.setInclude("test_mybatis_plus_user");
       // 配置數(shù)據(jù)表與實(shí)體類名之間映射的策略
       strategy.setNaming(NamingStrategy.underline_to_camel);
       // 配置數(shù)據(jù)表的字段與實(shí)體類的屬性名之間映射的策略
       strategy.setColumnNaming(NamingStrategy.underline_to_camel);
       // 配置 lombok 模式
       strategy.setEntityLombokModel(true);
       // 配置 rest 風(fēng)格的控制器(@RestController)
       strategy.setRestControllerStyle(true);
       // 配置駝峰轉(zhuǎn)連字符
       strategy.setControllerMappingHyphenStyle(true);
       // 配置表前綴窖剑,生成實(shí)體時(shí)去除表前綴
       // 此處的表名為 test_mybatis_plus_user,模塊名為 test_mybatis_plus戈稿,去除前綴后剩下為 user西土。
       strategy.setTablePrefix(pc.getModuleName() + "_");
       mpg.setStrategy(strategy);

       // Step6:執(zhí)行代碼生成操作
       mpg.execute();
   }
}
4、生成效果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鞍盗,一起剝皮案震驚了整個(gè)濱河市需了,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌般甲,老刑警劉巖肋乍,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敷存,居然都是意外死亡墓造,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門历帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)滔岳,“玉大人,你說(shuō)我怎么就攤上這事挽牢∑酌海” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵禽拔,是天一觀的道長(zhǎng)刘离。 經(jīng)常有香客問(wèn)我,道長(zhǎng)睹栖,這世上最難降的妖魔是什么硫惕? 我笑而不...
    開(kāi)封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮野来,結(jié)果婚禮上恼除,老公的妹妹穿的比我還像新娘。我一直安慰自己曼氛,他們只是感情好豁辉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著舀患,像睡著了一般徽级。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上聊浅,一...
    開(kāi)封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天餐抢,我揣著相機(jī)與錄音现使,去河邊找鬼。 笑死旷痕,一個(gè)胖子當(dāng)著我的面吹牛碳锈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苦蒿,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼殴胧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了佩迟?” 一聲冷哼從身側(cè)響起团滥,我...
    開(kāi)封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎报强,沒(méi)想到半個(gè)月后灸姊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秉溉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年力惯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片召嘶。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡父晶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弄跌,到底是詐尸還是另有隱情甲喝,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布铛只,位于F島的核電站埠胖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏淳玩。R本人自食惡果不足惜直撤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕着。 院中可真熱鬧谋竖,春花似錦、人聲如沸承匣。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悄雅。三九已至驱敲,卻和暖如春铁蹈,著一層夾襖步出監(jiān)牢的瞬間宽闲,已是汗流浹背众眨。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留容诬,地道東北人娩梨。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像览徒,于是被迫代替她去往敵國(guó)和親狈定。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容