天天看點

使用MyBatis-Plus代碼生成器(資料庫MySQL/Sqlite)

使用MyBatis-Plus代碼生成器(資料庫MySQL/Sqlite)

👨🏻‍🎓部落客介紹:大家好,我是芝士味的椒鹽,一名在校大學生,熱愛分享知識,很高興在這裡認識大家🌟

🌈擅長領域:Java、大資料、運維、電子

🙏🏻如果本文章各位小夥伴們有幫助的話,🍭關注+👍🏻點贊+🗣評論+📦收藏,相應的有空了我也會回訪,互助!!!

🤝另本人水準有限,旨在創作簡單易懂的文章,在文章描述時如有錯,懇請各位大佬指正,在此感謝!!!

@[TOC]

自動代碼生成器

  • AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個子產品的代碼,極大的提升了開發效率。
  • 由于代碼生成器MyBatis-Plus 從 3.0.3 之後移除了代碼生成器與模闆引擎的預設依賴,需要手動添加相關依賴:

maven依賴

代碼生成器依賴pom.xml:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.2</version>
</dependency>      
  • 添加 模闆引擎 依賴,MyBatis-Plus 支援 Velocity(預設)、Freemarker、Beetl,使用者可以選擇自己熟悉的模闆引擎,如果都不滿足您的要求,可以采用自定義模闆引擎。
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>      

MySQL代碼生成器

  • MySQL代碼生成器
/**
 * @author starrysky
 * @title: MybatisPlusAutomaticGenerator
 * @projectName mybaits_plus_final
 * @description: mybatis-pluas代碼自動生成器
 * @date 2021/2/109:59
 */
public class MybatisPlusAutomaticGenerator {
    public static void main(String[] args) {
        /**
         * 代碼生成器對象
         */
        AutoGenerator autoGenerator = new AutoGenerator();
        /**
         * 全局配置對象
         */
        GlobalConfig globalConfig = new GlobalConfig();
        String property = System.getProperty("user.dir");// 擷取目前項目的系統目錄
        globalConfig.setOutputDir(property+"/src/main/java");
        globalConfig.setAuthor("starrysky");
        globalConfig.setOpen(false);//生成之後是否打開所在的系統目錄
        globalConfig.setFileOverride(false);//是否覆寫
        globalConfig.setServiceName("%sService");//去掉Service的I字首
        globalConfig.setIdType(IdType.ASSIGN_ID);
        globalConfig.setDateType(DateType.ONLY_DATE);//日期類型,僅僅是時間
        globalConfig.setSwagger2(true);//配置swagger文檔
        autoGenerator.setGlobalConfig(globalConfig);
        /**
         * 設定資料源
         */
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("passwd");
        dataSourceConfig.setUrl("jdbc:p6spy:mariadb://127.0.0.1:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&passwordCharacterEncoding=utf-8&serverTimezone=Asia/Shanghai");
        dataSourceConfig.setDriverName("com.p6spy.engine.spy.P6SpyDriver");
        dataSourceConfig.setDbType(DbType.MARIADB);
        autoGenerator.setDataSource(dataSourceConfig);
        /**
         * 包的配置
         */
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("icu.lookyousmileface");
        packageConfig.setModuleName("MyPro");
        packageConfig.setEntity("entity");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setController("controller");
        autoGenerator.setPackageInfo(packageConfig);
        /**
         * 配置政策
         */
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("user");
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);//包的名字,下劃線轉駝峰
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//列的名字,下劃線轉駝峰
        strategyConfig.setEntityLombokModel(true);//自動lombok
        strategyConfig.setLogicDeleteFieldName("deleted");
        TableFill craete_time = new TableFill("craete_time", FieldFill.INSERT);//自動填充配置插入
        TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);//自動填充配置更新
        List<TableFill> tableFils = new CopyOnWriteArrayList<>();
        tableFils.add(craete_time);
        tableFils.add(update_time);
        strategyConfig.setTableFillList(tableFils);
        strategyConfig.setVersionFieldName("version");//樂觀鎖
        strategyConfig.setRestControllerStyle(true);//開啟Restf的風格,駝峰命名
        strategyConfig.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
        autoGenerator.setStrategy(strategyConfig);
        /**
         * 設定模版引擎
         */
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
        /**
         * 執行
         */
        autoGenerator.execute();

    }
}
      

Sqlite代碼生成器

  • Sqlite代碼生成器
package icu.look.smile.uilts;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
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.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @author starrysky
 * @title: MybatisPlusAutomaticGenerator
 * @projectName mybaits_plus_final
 * @description: mybatis-pluas代碼自動生成器
 * @date 2021/2/109:59
 */
public class MybatisPlusAutomaticGenerator {
    public static void main(String[] args) {
                /**
                 * 代碼生成器對象
                 */
                AutoGenerator autoGenerator = new AutoGenerator();
                /**
                 * 全局配置對象
                 */
                GlobalConfig globalConfig = new GlobalConfig();
                String property = System.getProperty("user.dir");// 擷取目前項目的系統目錄
                globalConfig.setOutputDir(property+"/src/main/java");
                globalConfig.setAuthor("starrysky");
                globalConfig.setOpen(false);//生成之後是否打開所在的系統目錄
                globalConfig.setFileOverride(false);//是否覆寫
                globalConfig.setServiceName("%sService");//去掉Service的I字首
                globalConfig.setIdType(IdType.AUTO);
                globalConfig.setDateType(DateType.ONLY_DATE);//日期類型,僅僅是時間
                globalConfig.setSwagger2(true);//配置swagger文檔
                autoGenerator.setGlobalConfig(globalConfig);
                /**
                 * 設定資料源
                 */
                DataSourceConfig dataSourceConfig = new DataSourceConfig();
                dataSourceConfig.setUrl("jdbc:sqlite:db/main.db");
                dataSourceConfig.setDriverName("org.sqlite.JDBC");
                dataSourceConfig.setDbType(DbType.SQLITE);
                autoGenerator.setDataSource(dataSourceConfig);
                /**
                 * 包的配置
                 */
                PackageConfig packageConfig = new PackageConfig();
                packageConfig.setParent("icu.smile.autogen");
                packageConfig.setModuleName("MyPro");
                packageConfig.setEntity("entity");
                packageConfig.setMapper("mapper");
                packageConfig.setService("service");
                packageConfig.setController("controller");
                autoGenerator.setPackageInfo(packageConfig);
                /**
                 * 配置政策
                 */
                StrategyConfig strategyConfig = new StrategyConfig();
                strategyConfig.setInclude("user_info");
                strategyConfig.setNaming(NamingStrategy.underline_to_camel);//包的名字,下劃線轉駝峰
                strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//列的名字,下劃線轉駝峰
                strategyConfig.setEntityLombokModel(true);//自動lombok
                strategyConfig.setLogicDeleteFieldName("deleted");
                TableFill craete_time = new TableFill("craete_time", FieldFill.INSERT);//自動填充配置插入
                TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);//自動填充配置更新
                List<TableFill> tableFils = new CopyOnWriteArrayList<>();
                tableFils.add(craete_time);
                tableFils.add(update_time);
                strategyConfig.setTableFillList(tableFils);
                strategyConfig.setVersionFieldName("version");//樂觀鎖
                strategyConfig.setRestControllerStyle(true);//開啟Restf的風格,駝峰命名
                strategyConfig.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
                autoGenerator.setStrategy(strategyConfig);
                /**
                 * 設定模版引擎
                 */
                autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
                /**
                 * 執行
                 */
                autoGenerator.execute();

            }

    }