最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatisPlus代碼生成器實(shí)踐(自己二次封裝)

 更新時(shí)間:2026年05月31日 10:15:13   作者:長(zhǎng)路??  
這段描述主要講解了如何配置MybatisPlus以生成代碼,并強(qiáng)調(diào)了官方文檔的重要性,同時(shí)提到了.xml文件的放置位置以及自動(dòng)掃描的功能,適合對(duì)MybatisPlus感興趣的開發(fā)者閱讀

前提準(zhǔn)備

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

核心配置

前提說(shuō)明

你只需要配置一下內(nèi)容之后即可按照指定內(nèi)容來(lái)進(jìn)行生成代碼:

代碼配置

修改請(qǐng)認(rèn)準(zhǔn)官方文檔—baomidou(MybatisPlus):

https://mp.baomidou.com/config/generator-config.html#%E6%95%B0%E6%8D%AE%E6%BA%90-datasourceconfig-%E9%85%8D%E7%BD%AE

將下面代碼直接粘貼,修改配置即可使用:

package com.changlu.demo;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @author ChangLu
 * @date 2021/09/22 16:38
 * @Desc 封裝之后的代碼生成器,僅需填寫幾個(gè)核心配置即可
 * 
 *  核心依賴
    *  <dependency>       
    *      <groupId>com.baomidou</groupId>       
    *      <artifactId>mybatis-plus-generator</artifactId>       
    *      <version>3.4.1</version>       
    *  </dependency>       
    *  <dependency>       
    *      <groupId>mysql</groupId>       
    *      <artifactId>mysql-connector-java</artifactId>       
    *      <scope>runtime</scope>       
    *  </dependency>       
    *  <dependency>       
    *      <groupId>org.apache.velocity</groupId>       
    *      <artifactId>velocity-engine-core</artifactId>       
    *      <version>2.0</version>       
    *  </dependency>       
 *  其他依賴如:lombok、swagger3
 **/
public class MyCodeGenerator {

    //核心配置
    private static String targetDatabaseName = "dj.svublog.rdb";//目標(biāo)數(shù)據(jù)庫(kù)名
    private static String username = "root";//用戶名
    private static String password = "123456";//密碼
    private static String[] tihuan_table_prefix = {"sys_"}; //表替換前綴,可多個(gè)
    private static String[] paichu_table_name = {"sys_member_role","sys_role_permission"}; //排除指定表,可多個(gè)
    private static String referenceModule = "com.changlu.demo"; //當(dāng)前的引用模塊,如com.changlu.demo
    private static String targetModule = "test"; //輸出指定文件目錄的包名 如:test

    public static void main(String[] args) {
        // 代碼生成器
        AutoGenerator mpg = new AutoGenerator();

        //全局配置(若是多模塊的話傳入對(duì)應(yīng)模塊的工程名!)
        mpg.setGlobalConfig(createGlobalConfig(null));
//        mpg.setGlobalConfig(createGlobalConfig(common));
        //數(shù)據(jù)庫(kù)源
        mpg.setDataSource(createDataSourceConfig());
        //包配置
        mpg.setPackageInfo(createPackageConfig());
        //策略配置
        mpg.setStrategy(createStrategyConfig());
        //默認(rèn)Velocity模板生成
//        mpg.setTemplateEngine(new FreemarkerTemplateEngine());  //其他模板Freemarker

        //執(zhí)行操作
        mpg.execute();
    }
    // 1、全局配置  若是多模塊,傳入指定父模塊名稱
    private static GlobalConfig createGlobalConfig(String parentModuleName){
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");//獲取到當(dāng)前工程路徑地址,若是多模塊情況就會(huì)有問(wèn)題
        if(parentModuleName != null){
            projectPath = projectPath + "/"+parentModuleName+ "/src/main/java";
        }else{
            projectPath = projectPath + "/src/main/java";
        }
        gc.setOutputDir(projectPath)
                .setAuthor("ChangLu") //設(shè)置作者
                .setOpen(false) //不打開輸出目錄
                .setSwagger2(true) //添加swagger2注解
                .setBaseResultMap(true) //每個(gè)mapper文件中都生成通用結(jié)果映射集
                .setFileOverride(true) //下次生成文件時(shí)進(jìn)行覆蓋(不設(shè)置的話當(dāng)進(jìn)行第二次生成就會(huì)在同一個(gè)目錄產(chǎn)生相同的文件)
                .setEntityName("%sModel") //生成實(shí)體類文件名,如:%sModel 生成 UserModel
                .setMapperName("%sMapper") //生成dao,這里我們配置生成如 UserMapper
                .setMapperName("%sMapper") //生成mapper.xml文件,這里生成如 UserMapper.xml
                .setServiceName("%sService") //生成service接口
                .setServiceImplName("%sServiceImpl");//生成service實(shí)現(xiàn)類
        return gc;
    }

    // 2、數(shù)據(jù)庫(kù)源
    private static DataSourceConfig createDataSourceConfig(){
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/+"+targetDatabaseName+"+?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai")
            .setDriverName("com.mysql.cj.jdbc.Driver")
            .setUsername(username)
            .setPassword(password);
        //轉(zhuǎn)換類型  LocalDateTime=>Date
        dsc.setTypeConvert((globalConfig, fieldType) -> {
            String t = fieldType.toLowerCase();
            if(t.contains("datetime")){   //若是匹配到數(shù)據(jù)庫(kù)類型為"datetime",就返回Date類型(轉(zhuǎn)為Java的)
                return DbColumnType.DATE;
            }
            //其它字段采用默認(rèn)轉(zhuǎn)換(非mysql數(shù)據(jù)庫(kù)可以使用其它默認(rèn)的數(shù)據(jù)庫(kù)轉(zhuǎn)換器)
            return new MySqlTypeConvert().processTypeConvert(globalConfig,fieldType);
        });
        return dsc;
    }

    //3、包配置
    private static PackageConfig createPackageConfig(){
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(targetModule) //生成的模塊名,也就是生成目標(biāo)指定文件名的路徑下
          .setParent(referenceModule); //父包名。如果為空,將下面子包名必須寫全部, 否則就只需寫子包名
        return pc;
    }

    //4、策略配置
    private static StrategyConfig createStrategyConfig(){
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel) //表名生成策略:下劃線轉(zhuǎn)駝峰,如pms_pro=>PmsPro
                .setColumnNaming(NamingStrategy.underline_to_camel) //字段名生成策略,同上,如last_name=>lastName
                .setEntityLombokModel(true) //支持lombok注解
                .setTablePrefix(tihuan_table_prefix) //設(shè)置表的替換前綴:這里就是起到過(guò)濾作用
                .setEntityTableFieldAnnotationEnable(true) //生成表、字段映射注解
                .setExclude(paichu_table_name); //排除指定表
        return strategy;
    }
}

對(duì)應(yīng)的.xml文件可以放置在resource/mapper目錄下,會(huì)自動(dòng)掃到

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法

    SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法

    本篇文章主要介紹了SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Mybatis-Plus 搭建與使用入門(小結(jié))

    Mybatis-Plus 搭建與使用入門(小結(jié))

    Mybatis-Plus(簡(jiǎn)稱MP)是一個(gè) Mybatis 的增強(qiáng)工具,這篇文章主要介紹了Mybatis-Plus 搭建與使用入門(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • IDEA使用jformdesigner插件做管理系統(tǒng)MVC架構(gòu)的步驟和實(shí)現(xiàn)思路

    IDEA使用jformdesigner插件做管理系統(tǒng)MVC架構(gòu)的步驟和實(shí)現(xiàn)思路

    在?IntelliJ?IDEA?中結(jié)合?JFormDesigner?插件,通過(guò)?Swing?框架實(shí)現(xiàn)一個(gè)管理系統(tǒng)的?MVC?架構(gòu)是一種經(jīng)典的開發(fā)方式,以下是具體的步驟和實(shí)現(xiàn)思路,包含從項(xiàng)目創(chuàng)建到?MVC?架構(gòu)的核心代碼實(shí)現(xiàn),需要的朋友可以參考下
    2024-12-12
  • PL/SQL實(shí)現(xiàn)JAVA中的split()方法的例子

    PL/SQL實(shí)現(xiàn)JAVA中的split()方法的例子

    這篇文章主要介紹了PL/SQL實(shí)現(xiàn)JAVA中的split()方法的例子的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • MybatisPlus:使用SQL保留字(關(guān)鍵字)的操作

    MybatisPlus:使用SQL保留字(關(guān)鍵字)的操作

    這篇文章主要介紹了MybatisPlus:使用SQL保留字(關(guān)鍵字)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 詳解JAVA 反射機(jī)制

    詳解JAVA 反射機(jī)制

    這篇文章主要介紹了JAVA 反射機(jī)制的相關(guān)知識(shí),文中講解的非常細(xì)致,代碼幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java如何導(dǎo)出包含多個(gè)Sheet的Excel文件

    Java如何導(dǎo)出包含多個(gè)Sheet的Excel文件

    這篇文章主要為大家詳細(xì)介紹了Java如何導(dǎo)出包含多個(gè)Sheet的Excel文件,文中一共介紹了兩種實(shí)現(xiàn)方法,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07
  • Java多線程執(zhí)行處理業(yè)務(wù)時(shí)間太久解決方法代碼示例

    Java多線程執(zhí)行處理業(yè)務(wù)時(shí)間太久解決方法代碼示例

    這篇文章主要介紹了Java多線程執(zhí)行處理業(yè)務(wù)時(shí)間太久解決方法代碼示例的相關(guān)資料,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 解決springboot依賴包中報(bào)錯(cuò)unknown的問(wèn)題

    解決springboot依賴包中報(bào)錯(cuò)unknown的問(wèn)題

    這篇文章主要介紹了解決springboot依賴包中報(bào)錯(cuò)unknown的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 淺談Java中Collection和Collections的區(qū)別

    淺談Java中Collection和Collections的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談Java中Collection和Collections的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08

最新評(píng)論

芜湖县| 凤台县| 乌拉特前旗| 大英县| 铜陵市| 华亭县| 宣武区| 芦溪县| 常熟市| 新蔡县| 长葛市| 芦山县| 湖南省| 扎兰屯市| 六枝特区| 梁平县| 察雅县| 于田县| 体育| 翼城县| 离岛区| 峨边| 石渠县| 封丘县| 积石山| 郑州市| 青州市| 萨迦县| 依兰县| 勃利县| 神农架林区| 开平市| 林甸县| 潮州市| 三原县| 汝阳县| 红河县| 高碑店市| 玉门市| 临漳县| 余干县|