mybatis plus自動(dòng)生成代碼配置

該文件記錄在spring-boot下使用mybatis plus數(shù)據(jù)庫(kù)的表自動(dòng)生成到項(xiàng)目中的相關(guān)代碼文件

  • 模板引擎使用的是Freemarker
  • 該文檔記錄的是xml文件生成在src.main.java下的相關(guān)文件夾中
pom文件:

代碼中的依賴(lài)包為最少依賴(lài)包

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
    </parent>

    <groupId>xx.flower</groupId>
    <artifactId>my_boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.8.0-beta4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
    </dependencies>

代碼內(nèi)容:
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.List;

public class MpGenerator {
    public static void main(String[] args){
        // 設(shè)置引用模板
        AutoGenerator generator = new AutoGenerator();
        generator.setTemplateEngine(new FreemarkerTemplateEngine());

        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir("F:\\IdeaProjects\\my_boot\\src\\main\\java");
        globalConfig.setAuthor("xx");
        globalConfig.setOpen(false);
        // 是否覆蓋同名文件,默認(rèn)是false
        globalConfig.setFileOverride(false);
        // 是否支持ActiveRecord特性诈悍,默認(rèn)false(不支持)
        /*
        在Mybatis-Plus中提供了ActiveRecord的模式,
        支持 ActiveRecord 形式調(diào)用忍啸,
        實(shí)體類(lèi)只需繼承 Model 類(lèi)即可實(shí)現(xiàn)基本 CRUD 操作潜圃,
        簡(jiǎn)單來(lái)說(shuō)就是一個(gè)實(shí)體類(lèi)繼承Model類(lèi)胳蛮,
        并通過(guò)注解與數(shù)據(jù)庫(kù)的表名進(jìn)行關(guān)聯(lián)甘桑,
        這樣就可以通過(guò)實(shí)體類(lèi)直接進(jìn)行表的簡(jiǎn)單增刪改查操作绘证,
        這樣也確實(shí)極大的方便了開(kāi)發(fā)人員缩抡。
         */
        globalConfig.setActiveRecord(true);
        // xml中的resultmap 默認(rèn)false
        globalConfig.setBaseResultMap(true);
        // xml中的columList---沒(méi)有默認(rèn)值
        globalConfig.setBaseColumnList(true);
        /* 自定義文件命名奠宜,注意%s會(huì)自動(dòng)填充表實(shí)體屬性 */
        globalConfig.setMapperName("%sMapper");
        globalConfig.setXmlName("%sMapper");
        globalConfig.setServiceName("%sService");
        globalConfig.setServiceImplName("%sServiceImpl");
        globalConfig.setControllerName("%sController");
        // 加載全局配置
        generator.setGlobalConfig(globalConfig);

        // 數(shù)據(jù)庫(kù)配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test_xx?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("root");
        generator.setDataSource(dataSourceConfig);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("test");
        pc.setParent("xx.flower");
        pc.setEntity("entity");
        pc.setController("controller");
        pc.setMapper("mapper");
        pc.setService("service");
        // 默認(rèn)在service路徑下的impl下,設(shè)個(gè)設(shè)置則可以指定其他路徑
        //pc.setServiceImpl("service.impl");
        // 默認(rèn)在mapper路徑下的xml瞻想,這個(gè)設(shè)置則可以指定其他路徑
        //pc.setXml("mapper.xml");
        generator.setPackageInfo(pc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        // 表前綴压真,多個(gè)英文逗號(hào)分割或者 new String[]{"",""}
        strategy.setTablePrefix("user_");
        // 表明生成策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 表明,多個(gè)英文逗號(hào)分割或者 new String[]{"",""}
        strategy.setInclude("user_info");
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setControllerMappingHyphenStyle(true);// 駝峰轉(zhuǎn)連字符
        strategy.setEntityTableFieldAnnotationEnable(true);// 是否生成實(shí)體時(shí)蘑险,生成字段注解
        // 自己的父類(lèi)實(shí)體滴肿,沒(méi)有就不用設(shè)置
        //strategy.setSuperEntityClass();
        // 自己的父類(lèi)控制器,沒(méi)有就不用設(shè)置
        //strategy.setSuperControllerClass();
        // 字段自動(dòng)操作策略
        List<TableFill> tableFillList = new ArrayList<>();
        tableFillList.add(new TableFill("create_time", FieldFill.INSERT));
        tableFillList.add(new TableFill("update_time", FieldFill.INSERT_UPDATE));
        // 表字段與屬性映射關(guān)系
        strategy.setTableFillList(tableFillList);
        strategy.setEntitySerialVersionUID(true);

        generator.setStrategy(strategy);

        /*
         * 1. 如果.xml文件是生成到Mapper類(lèi)下面的xml文件夾下佃迄,這個(gè)配置不需要泼差,如果配置了則不生成.xml文件了
         * 2. 如果.xml文件不是默認(rèn)生成到Mapper類(lèi)下面的xml文件夾下,而是指定到某個(gè)路徑下呵俏,
         *      則該配置需要配置tc.setXml(null)堆缘,如果不配置則Mapper類(lèi)下面的xml文件夾下還會(huì)同時(shí)生成一份默認(rèn)的。
         */
//        TemplateConfig tc = new TemplateConfig();
//        tc.setXml(null);// 這個(gè)標(biāo)注了則不生成XML文件了
//        generator.setTemplate(tc);

        // 注入配置柴信, 該配置不在代碼中配置出來(lái)的話(huà)套啤,則生該自動(dòng)生成的文件不會(huì)生成對(duì)應(yīng)的文件!!G甭佟萄涯!
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        generator.setCfg(cfg);

        // 執(zhí)行mybatis plus自動(dòng)從表生成對(duì)應(yīng)一系列的文件
        generator.execute();

    }
}


參考文獻(xiàn):

MyBatis-Plus-代碼生成器
MyBatis-Plus-代碼生成器配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唆鸡,隨后出現(xiàn)的幾起案子涝影,更是在濱河造成了極大的恐慌,老刑警劉巖争占,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燃逻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡臂痕,警方通過(guò)查閱死者的電腦和手機(jī)伯襟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)握童,“玉大人姆怪,你說(shuō)我怎么就攤上這事≡杓ǎ” “怎么了稽揭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肥卡。 經(jīng)常有香客問(wèn)我溪掀,道長(zhǎng),這世上最難降的妖魔是什么步鉴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任揪胃,我火速辦了婚禮,結(jié)果婚禮上唠叛,老公的妹妹穿的比我還像新娘只嚣。我一直安慰自己,他們只是感情好艺沼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布册舞。 她就那樣靜靜地躺著,像睡著了一般障般。 火紅的嫁衣襯著肌膚如雪调鲸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天挽荡,我揣著相機(jī)與錄音藐石,去河邊找鬼。 笑死定拟,一個(gè)胖子當(dāng)著我的面吹牛于微,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼株依,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驱证!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起恋腕,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抹锄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后荠藤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體伙单,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年哈肖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吻育。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡牡彻,死狀恐怖扫沼,靈堂內(nèi)的尸體忽然破棺而出鲸匿,到底是詐尸還是另有隱情镊掖,我是刑警寧澤乘瓤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站总寻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梢为。R本人自食惡果不足惜渐行,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铸董。 院中可真熱鬧祟印,春花似錦、人聲如沸粟害。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吟孙。三九已至藻治,卻和暖如春栋艳,著一層夾襖步出監(jiān)牢的瞬間吸占,已是汗流浹背矾屯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工件蚕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留排作,地道東北人亚情。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓衫生,卻偏偏與公主長(zhǎng)得像罪针,于是被迫代替她去往敵國(guó)和親泪酱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355