mybatis-plus 代碼生成器

AutoGenerator 是 MyBatis-Plus 的代碼生成器蕉鸳,通過 AutoGenerator 可以快速生成 Entity端铛、Mapper、Mapper XML努酸、Service、Controller 等各個模塊的代碼杜恰,極大的提升了開發(fā)效率获诈。

詳細配置參考:https://mybatis.plus/config/generator-config.html

代碼下載:鏈接:https://pan.baidu.com/s/18f0dZxniUMsUyPFP92XKdQ 提取碼:fin9

pom依賴

<dependencies>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.3.1.tmp</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.19</version>
    </dependency>
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.30</version>
    </dependency>
</dependencies>

日志配置文件(log4j.properties)

log4j.rootLogger=debug,consoleAppender
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-d{HH:mm:ss} [%l]-[%p] %m%n

生成器代碼

package com.baomidou.main;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
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.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {
    // 數(shù)據(jù)庫相關(guān)參數(shù)
    static String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&rewriteBatchedStatements=true";
    static String driverName = "com.mysql.cj.jdbc.Driver";
    static String username = "root";
    static String password = "root";
    // 生成內(nèi)容的父包名
    static String parentPackageName = "com.baomidou";
    // 獲取項目路徑
    static String projectPath = System.getProperty("user.dir");
    // 包信息
    private static PackageConfig packageInfo = packageInfo();

    public static void main(String[] args) {
        // 代碼生成器
        AutoGenerator mpg = new AutoGenerator();
        mpg.setDataSource(dataSource()); // 數(shù)據(jù)源配置
        mpg.setPackageInfo(packageInfo); // 包配置
        mpg.setStrategy(strategy()); // 策略配置
        mpg.setTemplate(template()); // 配置模板
        mpg.setGlobalConfig(globalConfig()); // 全局配置
        mpg.setCfg(injectionConfig()); // 自定義配置
        mpg.execute();
    }

    // 數(shù)據(jù)源配置
    private static DataSourceConfig dataSource() {
        return new DataSourceConfig() //
                // .setSchemaName("public") //
                .setUrl(url) //
                .setDriverName(driverName) //
                .setUsername(username) //
                .setPassword(password);
    }

    // 包配置
    private static PackageConfig packageInfo() {
        return new PackageConfig() //
                .setModuleName(scanner("模塊名")) // 父包模塊名
                .setParent(parentPackageName); // 父包名。如果為空心褐,將下面子包名必須寫全部舔涎, 否則就只需寫子包名
    }

    // 數(shù)據(jù)庫表策略配置
    private static StrategyConfig strategy() {
        return new StrategyConfig() //
                .setNaming(NamingStrategy.underline_to_camel) // 數(shù)據(jù)庫表映射到實體的命名策略
                .setColumnNaming(NamingStrategy.underline_to_camel) // 數(shù)據(jù)庫表字段映射到實體的命名策略, 未指定按照 naming 執(zhí)行

                // .setTablePrefix(packageInfo.getModuleName() + "_") // 表前綴
                // .setFieldPrefix("") // 字段前綴

                // .setSuperEntityClass("") // 自定義繼承的Entity類全稱,帶包名
                // .setSuperEntityColumns("id") // 自定義基礎(chǔ)的Entity類逗爹,公共字段
                // .setSuperControllerClass("") // 自定義繼承的Controller類全稱亡嫌,帶包名

                .setEntityLombokModel(true) // 【實體】是否為lombok模型(默認 false)
                .setRestControllerStyle(true) // 生成 @RestController 控制器
                .setInclude(scanner("表名,多個英文逗號分割(支持正則)").split(",")) // 需要包含的表名掘而,允許正則表達式(與exclude二選一配置)
                .setControllerMappingHyphenStyle(true);// 控制器映射駝峰轉(zhuǎn)連字符
    }

    // 配置模板
    private static TemplateConfig template() {
        return new TemplateConfig()
                // 配置自定義輸出模板
                // 指定自定義模板路徑昼伴,注意不要帶上.ftl/.vm, 會根據(jù)使用的模板引擎自動識別
                // .setEntity("")
                // .setService("")
                // .setController("")
                .setXml(null);
    }

    // 全局配置
    private static GlobalConfig globalConfig() {

        return new GlobalConfig() //
                .setOutputDir(projectPath + "/src/main/java") // 生成文件的輸出目錄
                .setAuthor("張磊") // 作者
                .setSwagger2(true) // 實體屬性 Swagger2 注解
                .setOpen(false); // 是否打開輸出目錄
    }

    // 自定義配置
    private static InjectionConfig injectionConfig() {
        InjectionConfig cfg = new InjectionConfig() {
            public void initMap() {}
        };
        // 如果模板引擎是 freemarker
        // String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        String templatePath = "/templates/mapper.xml.vm";
        // 自定義輸出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定義配置會被優(yōu)先輸出
        focList.add(new FileOutConfig(templatePath) {
            public String outputFile(TableInfo tableInfo) {
                // 自定義輸出文件名 , 如果你 Entity 設(shè)置了前后綴镣屹、此處注意 xml 的名稱會跟著發(fā)生變化F越肌!
                return projectPath //
                        + "/src/main/resources/mapper/" //
                        + packageInfo.getModuleName() //
                        + "/" //
                        + tableInfo.getEntityName() //
                        + "Mapper" //
                        + StringPool.DOT_XML;
            }
        });
        /*
        cfg.setFileCreate(new IFileCreate() {
         public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
             // 判斷自定義文件夾是否需要創(chuàng)建
             checkDir("調(diào)用默認方法創(chuàng)建的目錄女蜈,自定義目錄用");
             if (fileType == FileType.MAPPER) {
                 // 已經(jīng)生成 mapper 文件判斷存在持舆,不想重新生成返回 false
                 return !new File(filePath).exists();
             }
             // 允許生成模板文件
             return true;
         }
        });
        */
        // cfg.setFileOutConfigList(focList);
        return cfg;
    }

    // 讀取控制臺內(nèi)容
    @SuppressWarnings("resource")
    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.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("請輸入正確的" + tip + "!");
    }

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子峡眶,更是在濱河造成了極大的恐慌,老刑警劉巖竹伸,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡勋篓,警方通過查閱死者的電腦和手機吧享,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來譬嚣,“玉大人钢颂,你說我怎么就攤上這事“菀” “怎么了殊鞭?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尼桶。 經(jīng)常有香客問我操灿,道長,這世上最難降的妖魔是什么泵督? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任趾盐,我火速辦了婚禮,結(jié)果婚禮上幌蚊,老公的妹妹穿的比我還像新娘谤碳。我一直安慰自己溃卡,他們只是感情好溢豆,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瘸羡,像睡著了一般漩仙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犹赖,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天队他,我揣著相機與錄音,去河邊找鬼峻村。 笑死麸折,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的粘昨。 我是一名探鬼主播垢啼,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼张肾!你這毒婦竟也來了芭析?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤吞瞪,失蹤者是張志新(化名)和其女友劉穎馁启,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芍秆,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡惯疙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年翠勉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螟碎。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡眉菱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掉分,到底是詐尸還是另有隱情俭缓,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布酥郭,位于F島的核電站华坦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏不从。R本人自食惡果不足惜惜姐,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椿息。 院中可真熱鬧歹袁,春花似錦、人聲如沸寝优。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乏矾。三九已至孟抗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钻心,已是汗流浹背凄硼。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捷沸,地道東北人摊沉。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像痒给,于是被迫代替她去往敵國和親说墨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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