【MyBatis-Plus(MP)】逆向工程(實(shí)例快速上手)

前提工作:數(shù)據(jù)庫得哆、數(shù)據(jù)庫里有表沥曹、連接數(shù)據(jù)庫的依賴髓帽、springboot + maven

【參考資料】:?MyBatis-Plus 代碼生成器

????首先奄薇,先介紹一下AutoGenerator驳阎。(下面代碼運(yùn)用到)

????AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity馁蒂、Mapper呵晚、Mapper XML、Service沫屡、Controller 等各個(gè)模塊的代碼饵隙,極大的提升了開發(fā)效率。

【實(shí)例快速上手】

? ? 【第一步】沮脖,先配置三個(gè)依賴金矛。

圖 1-1?

<!-- mysql -->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>mysql</groupId>

? ? ? ? ? ? <artifactId>mysql-connector-java</artifactId>

? ? ? ? ? ? <scope>runtime</scope>

? ? ? ? </dependency>

<!-- mysql -->

<!-- MP -->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>com.baomidou</groupId>

? ? ? ? ? ? <artifactId>mybatis-plus-boot-starter</artifactId>

? ? ? ? ? ? <version>3.3.1.tmp</version>

? ? ? ? </dependency>

? ? ? ? <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>

? ? ? ? <!-- MP -->


????【第二步】在該項(xiàng)目里創(chuàng)建 代碼生成器 類(參考:代碼生成器使用教程

圖 2-1 項(xiàng)目結(jié)構(gòu)


圖 2-2 代碼改寫

package com.anpai.demo.mybatisplus;

import com.baomidou.mybatisplus.annotation.DbType;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.generator.AutoGenerator;

import com.baomidou.mybatisplus.generator.config.*;

import com.baomidou.mybatisplus.generator.config.rules.DateType;

import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

// 演示例子芯急,執(zhí)行 main 方法控制臺(tái)輸入模塊表名回車自動(dòng)生成對應(yīng)項(xiàng)目目錄中

public class CodeGenerator {

? ? /**

? ? * <p>

? ? * 讀取控制臺(tái)內(nèi)容

? ? * </p>

? ? */

? /* public static String scanner(String tip) {

? ? ? ? Scanner scanner = new Scanner(System.in);

? ? ? ? StringBuilder help = new StringBuilder();

? ? ? ? help.append("請輸入" + tip + ":");

? ? ? ? System.out.println(help.toString());

? ? ? ? if (scanner.hasNext()) {

? ? ? ? ? ? String ipt = scanner.next();

? ? ? ? ? ? if (StringUtils.isNotEmpty(ipt)) {

? ? ? ? ? ? ? ? return ipt;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? throw new MybatisPlusException("請輸入正確的" + tip + "!");

? ? }*/

? ? public static void main(String[] args) {

? ? ? ? // 代碼生成器

? ? ? ? AutoGenerator mpg = new AutoGenerator();

? ? ? ? // 全局配置

? ? ? ? GlobalConfig gc = new GlobalConfig();

? ? ? ? String projectPath = System.getProperty("user.dir");

? ? ? ? gc.setOutputDir("D:\\University\\Anpai\\anpai\\mybatis-plus" + "/src/main/java");

? ? ? ? gc.setFileOverride(false);

? ? ? ? gc.setServiceName("%sService");

? ? ? ? gc.setIdType(IdType.ID_WORKER_STR);

? ? ? ? gc.setDateType(DateType.ONLY_DATE);

? ? ? ? gc.setSwagger2(true);

? ? ? ? gc.setAuthor("luowenlong");

? ? ? ? gc.setOpen(false);

? ? ? ? // gc.setSwagger2(true); 實(shí)體屬性 Swagger2 注解

? ? ? ? mpg.setGlobalConfig(gc);

? ? ? ? // 數(shù)據(jù)源配置

? ? ? ? DataSourceConfig dsc = new DataSourceConfig();

? ? ? ? dsc.setUrl("jdbc:mysql://47.112.247.160:3306/anpaidb?serverTimezone=GMT%2B8");

? ? ? ? // dsc.setSchemaName("public");

? ? ? ? dsc.setDriverName("com.mysql.cj.jdbc.Driver");

? ? ? ? dsc.setUsername("root");

? ? ? ? dsc.setPassword("123456");

? ? ? ? dsc.setDbType(DbType.MYSQL);

? ? ? ? mpg.setDataSource(dsc);

? ? ? ? // 包配置

? ? ? ? PackageConfig pc = new PackageConfig();

? ? ? ? pc.setModuleName("mybatisplus");

? ? ? ? pc.setParent("com.anpai.demo");

? ? ? ? pc.setController("controller");

? ? ? ? pc.setEntity("entity");

? ? ? ? pc.setService("service");

? ? ? ? pc.setMapper("mapper");

? ? ? ? mpg.setPackageInfo(pc);

? ? ? ? // 策略配置

? ? ? ? StrategyConfig strategy = new StrategyConfig();

? ? ? ? // strategy.setInclude("edu_teacher");

? ? ? ? strategy.setNaming(NamingStrategy.underline_to_camel); // 數(shù)據(jù)庫表映射到實(shí)體的命名策略

? ? ? ? strategy.setTablePrefix(pc.getModuleName() + "_"); // 生成實(shí)體時(shí)去掉表前綴

? ? ? ? strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 數(shù)據(jù)庫表字段映射到實(shí)體的命名策略

? ? ? ? strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter鏈?zhǔn)讲僮?/p>

? ? ? ? strategy.setRestControllerStyle(true); // restful api風(fēng)格控制器

? ? ? ? strategy.setControllerMappingHyphenStyle(true); // url中駝峰轉(zhuǎn)連字符

? ? ? ? mpg.setStrategy(strategy);

? ? ? ? // 執(zhí)行

? ? ? ? mpg.execute();

? ? }

}


【第三步】運(yùn)行驶俊,生成文件娶耍,逆向工程完成。


圖 3-1? 運(yùn)行


圖 3-2? 生成文件成功废睦,逆向工程完成


(注:這只是筆者的自定義模板伺绽,在官方的MP里,有自定義模板教程嗜湃,?而且還有更多更多的功能奈应,參考官方的教程就好了。)




補(bǔ)充:下圖是定義在哪生成文件

圖 0-1 補(bǔ)充
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末购披,一起剝皮案震驚了整個(gè)濱河市杖挣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刚陡,老刑警劉巖惩妇,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筐乳,居然都是意外死亡歌殃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蝙云,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氓皱,“玉大人,你說我怎么就攤上這事勃刨〔ú模” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵身隐,是天一觀的道長廷区。 經(jīng)常有香客問我,道長贾铝,這世上最難降的妖魔是什么隙轻? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮垢揩,結(jié)果婚禮上大脉,老公的妹妹穿的比我還像新娘。我一直安慰自己水孩,他們只是感情好镰矿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俘种,像睡著了一般秤标。 火紅的嫁衣襯著肌膚如雪绝淡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天苍姜,我揣著相機(jī)與錄音牢酵,去河邊找鬼。 笑死衙猪,一個(gè)胖子當(dāng)著我的面吹牛馍乙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垫释,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丝格,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棵譬?” 一聲冷哼從身側(cè)響起显蝌,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎订咸,沒想到半個(gè)月后曼尊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脏嚷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年骆撇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片父叙。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡神郊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出高每,到底是詐尸還是另有隱情屿岂,我是刑警寧澤践宴,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布鲸匿,位于F島的核電站,受9級特大地震影響阻肩,放射性物質(zhì)發(fā)生泄漏带欢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一烤惊、第九天 我趴在偏房一處隱蔽的房頂上張望乔煞。 院中可真熱鬧,春花似錦柒室、人聲如沸渡贾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽空骚。三九已至纺讲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囤屹,已是汗流浹背熬甚。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肋坚,地道東北人乡括。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像智厌,于是被迫代替她去往敵國和親诲泌。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355