網站開發之使用 MyBatis-Plus 代碼生成器生成代碼

前言

​我們在使用 MyBatis-Plus 框架進行開發時,可以使用 MyBatis-Plus 官方提供的代碼生成器(AutoGenerator )來簡化開發,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發效率。下面我們就來使用 AutoGenerator 進行實際的代碼生成案例。

一、開發環境

  • JDK 1.8.0_152
  • Spring Boot 2.2.7
  • MyBatis-Plus 3.3.1
  • Apache Maven 3.6.1
  • IntelliJ IDEA 2020.1

二、使用教程

1、導入依賴

需要注意的是,MyBatis-Plus 從 3.0.3 之後就移除了代碼生成器與模板引擎的默認依賴,所以我們需要手動添加相關依賴。

  • 添加 springboot 依賴

    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>2.2.7.RELEASE</version>
    	<relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter</artifactId>
    </dependency>
    
  • 添加 代碼生成器 依賴

    使用代碼生成器只需單獨添加代碼生成器依賴即可,而不用導入mybatis-plus的依賴

    <dependency>
    	<groupId>com.baomidou</groupId>
    	<artifactId>mybatis-plus-generator</artifactId>
    	<version>3.3.1</version>
    </dependency>
    
  • 添加 數據庫驅動 依賴

    代碼生成器需要讀取數據庫中的表,所以需要添加數據庫相關依賴

    <!-- mysql驅動 -->
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    </dependency>
    
  • 添加 模板引擎 依賴

    MyBatis-Plus 支持 Velocity(默認)、Freemarker、Beetl,用戶可以選擇自己熟悉的模板引擎,如果都不滿足您的要求,可以採用自定義模板引擎。這裏我直接採用默認的模板引擎。

    <dependency>
    	<groupId>org.apache.velocity</groupId>
    	<artifactId>velocity-engine-core</artifactId>
    	<version>2.2</version>
    </dependency>
    

2、編寫配置類

直接上代碼,本人自己開發時使用的模板(註釋已經幫各位寫好了,嘻嘻)

public class CodeGenerator {

    /**
     * 功能描述: 讀取控制檯內容
     *
     * @param tip
     * @return java.lang.String
     * @author xiaoming
     * @date 2020-5-23
     */
    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 + "!");
    }

    /**
     * 功能描述: 代碼生成器
     *
     * @param args
     * @return void
     * @author xiaoming
     * @date 2020-5-23
     */
    public static void main(String[] args) {
        
        // 1、創建代碼生成器
        AutoGenerator mpg = new AutoGenerator();

        
        // 2、創建全局配置
        GlobalConfig gc = new GlobalConfig();
        // 獲取當前項目的路徑
        String projectPath = System.getProperty("user.dir");
        // 文件輸出路徑
        gc.setOutputDir(projectPath + "/src/main/java");
        // 指定作者
        gc.setAuthor("xiaoming");
        // 生成後是否打開資源管理器
        gc.setOpen(false);
        // 重新生成時文件是否覆蓋
        gc.setFileOverride(false);
        // 去掉Service接口的首字母I
        gc.setServiceName("%sService");
        // 主鍵生成策略
        gc.setIdType(IdType.AUTO);
        // 定義生成的實體類中日期類型
        gc.setDateType(DateType.ONLY_DATE);
        // 實體屬性 Swagger2 註解
        gc.setSwagger2(true);
        // 將全局配置設置到代碼生成器對象中
        mpg.setGlobalConfig(gc);

        
        // 3、創建數據源配置
        DataSourceConfig dsc = new DataSourceConfig();
        // 數據庫連接
        dsc.setUrl("jdbc:mysql://localhost:3306/xm_admin?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
        // 數據庫驅動
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        // 用戶名
        dsc.setUsername("root");
        // 密碼
        dsc.setPassword("root");
        // 數據庫類型
        dsc.setDbType(DbType.MYSQL);
        // 將數據庫配置設置到代碼生成器對象中
        mpg.setDataSource(dsc);

        
        // 4、創建包配置
        PackageConfig pc = new PackageConfig();
        // 模塊名(在控制檯輸入)
        pc.setModuleName(scanner("模塊名"));
        // 生成文件的上級包
        pc.setParent("com.xiaoming.springboot");
        // 設置具體包名
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        // 將包配置設置到代碼生成器對象中
        mpg.setPackageInfo(pc);

        
        // 5、創建策略配置
        StrategyConfig strategy = new StrategyConfig();
        // 數據庫表名下劃線轉駝峯命名
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 數據庫列名下劃線轉駝峯命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 設置lombok模型
        strategy.setEntityLombokModel(true);
        // restful api風格控制器
        strategy.setRestControllerStyle(true);
        // 表名(控制檯輸入)
        strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
        // url中駝峯轉連字符
        strategy.setControllerMappingHyphenStyle(true);
        // 生成實體時去掉表前綴
        strategy.setTablePrefix(pc.getModuleName() + "_");
        // 將生成策略配置設置到代碼生成器對象中
        mpg.setStrategy(strategy);

        
        // 6、開始生成代碼
        mpg.execute();
    }
}

3、生成代碼

直接點擊類中的main方法運行即可,或者你可以將代碼放入test包下,因爲我們只在開發時纔會用到這個類。

直接給大家錄製了一個GIF圖:
code
如圖所示,代碼已經生產完畢,是不是相當方便,我們只需要編寫我們的業務邏輯的代碼即可。

本篇參考mybatis-plus官方文檔編寫 官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章