使用mybatis-plus心路歷程-1

mybatis-plus

Talk is cheap. Show me the code.在后面的介紹中吃谣,mybatis-plus簡稱為mp

使用mp的代碼生成器

魯迅說過這么一句話:“懶惰是第一生產(chǎn)力阔馋!”,所以我們不難知道只有偷懶才可以推進社會進步,作為一個程序員冰蘑,我們必須學(xué)會如何去偷懶胸遇。
mp給了我們一個偷懶的機會,提供了代碼生成器读拆,話不多說擅憔,看代碼:

// 演示例子,執(zhí)行 main 方法控制臺輸入模塊表名回車自動生成對應(yīng)項目目錄中
public class CodeGenerator {

    /**
     * <p>
     * 讀取控制臺內(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(projectPath + "/src/main/java");
        gc.setAuthor("jobob");
        gc.setOpen(false);
        // gc.setSwagger2(true); 實體屬性 Swagger2 注解
        mpg.setGlobalConfig(gc);

        // 數(shù)據(jù)源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/ant?useUnicode=true&useSSL=false&characterEncoding=utf8");
        // dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("密碼");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(scanner("模塊名"));
        pc.setParent("com.baomidou.ant");
        mpg.setPackageInfo(pc);

        // 自定義配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };

        // 如果模板引擎是 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) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定義輸出文件名 暑诸, 如果你 Entity 設(shè)置了前后綴蚌讼、此處注意 xml 的名稱會跟著發(fā)生變化!个榕!
                return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });

        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();

        // 配置自定義輸出模板
        //指定自定義模板路徑篡石,注意不要帶上.ftl/.vm, 會根據(jù)使用的模板引擎自動識別
        // templateConfig.setEntity("templates/entity2.java");
        // templateConfig.setService();
        // templateConfig.setController();
        
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
        strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
        strategy.setSuperEntityColumns("id");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }

}

上面的代碼是從mp官網(wǎng)上down下來的西采,親測有效

操作流程

下一節(jié):使用mybatis-plus心路歷程-2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凰萨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子苛让,更是在濱河造成了極大的恐慌沟蔑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狱杰,死亡現(xiàn)場離奇詭異瘦材,居然都是意外死亡,警方通過查閱死者的電腦和手機仿畸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門食棕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人错沽,你說我怎么就攤上這事簿晓。” “怎么了千埃?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵憔儿,是天一觀的道長。 經(jīng)常有香客問我放可,道長谒臼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任耀里,我火速辦了婚禮蜈缤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冯挎。我一直安慰自己底哥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布房官。 她就那樣靜靜地躺著趾徽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翰守。 梳的紋絲不亂的頭發(fā)上孵奶,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音潦俺,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛事示,可吹牛的內(nèi)容都是我干的早像。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼肖爵,長吁一口氣:“原來是場噩夢啊……” “哼卢鹦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起劝堪,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冀自,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秒啦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熬粗,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年余境,在試婚紗的時候發(fā)現(xiàn)自己被綠了驻呐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡芳来,死狀恐怖含末,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情即舌,我是刑警寧澤佣盒,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站顽聂,受9級特大地震影響肥惭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芜飘,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一务豺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗦明,春花似錦笼沥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诗良,卻和暖如春汹桦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鉴裹。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工舞骆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钥弯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓督禽,卻偏偏與公主長得像脆霎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子狈惫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359