1. 程式人生 > 其它 >mybatis-plus最新版程式碼生成器(Swagger3)

mybatis-plus最新版程式碼生成器(Swagger3)

mybatis-plus swagger3

寫專案想用mybatis-plus+swagger3,百度最新版程式碼生成器都是舊版的,且官網的配置過於簡潔,所以手敲一份,在官網的基礎上加了一堆配置,lombok,restful,mvc三層結構目錄等等等等,記錄備份

依賴支援

    <dependencies>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--程式碼生成器構建依賴-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--mybatis-plus-starter-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.4</version>
        </dependency>
        <!--預設模板,不引入這個會報錯-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--swagger3-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>

快速生成

舊版可以直接通過new物件呼叫方法,全域性配置,包配置等需要建立三個物件,新版只用一個構建類即可完成所有配置,注意需要先呼叫xxxBuild()方法在呼叫其他方法

package com.wang;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

/**
 * 程式碼生成器
 *
 * @author whc
 * @since 2021/10/13
 */

public class CodeGenerator {
    static final String URL = "jdbc:mysql://localhost:3306/m_manage?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=true";
    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");//獲取專案路徑
        FastAutoGenerator.create(URL, "root", "125803")
                //全域性配置
                .globalConfig(builder -> {
                    builder.author("whc")
                            .outputDir(projectPath + "/src/main/java")//輸出路徑
                            .enableSwagger()//開啟swagger3
                            .fileOverride()//覆蓋檔案
                            .disableOpenDir();//不開啟資料夾
                })
                //包名配置
                .packageConfig(builder -> {
                    builder.parent("com.wang")
                            .moduleName("blog")
                            .service("service")
                            .serviceImpl("service.impl")
                            .controller("controller")
                            .entity("pojo")
                            .mapper("mapper")
                            //自定義輸出路徑,mapper.xml生成到resources目錄下
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper"));
                })
                //策略配置
                .strategyConfig(builder -> {
                    builder.addInclude("student")
                            .addTablePrefix("t_")//表字首
                            .serviceBuilder().formatServiceFileName("%sService")//去掉Service的 "I" 字首
                            .controllerBuilder().enableRestStyle()//restful開啟
                            .enableHyphenStyle()//url改變 例如:index_id_1
                            .entityBuilder().enableLombok();//開啟lombok
                })
                //執行
                .execute();
    }
}
  • 執行效果

互動式生成

package com.wang;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 程式碼生成器
 *
 * @author whc
 * @since 2021/10/13
 */

public class CodeGenerator {
    static final String URL = "jdbc:mysql://localhost:3306/m_manage?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=true";

    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");//獲取專案路徑
        FastAutoGenerator.create(URL, "root", "125803")
                //全域性配置
                .globalConfig((scanner, builder) -> {
                    builder.author(scanner.apply("請輸入作者名?"))
                            .outputDir(projectPath + "/src/main/java")//輸出路徑
                            .enableSwagger()//開啟swagger3
                            .fileOverride()//覆蓋檔案
                            .disableOpenDir();//不開啟資料夾
                })
                //包名配置
                .packageConfig((scanner, builder) -> {
                    builder.parent(scanner.apply("請輸入包名?"))
                            .moduleName("blog")
                            .service("service")
                            .serviceImpl("service.impl")
                            .controller("controller")
                            .entity("pojo")
                            .mapper("mapper")
                            //自定義輸出路徑,mapper.xml生成到resources目錄下
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper"));
                })
                //策略配置
                .strategyConfig((scanner, builder) -> {
                    builder.addInclude(getTables(scanner.apply("請輸入表名,多個英文逗號分隔?所有輸入 all")))
                            .addTablePrefix("t_")//表字首
                            .serviceBuilder().formatServiceFileName("%sService")//去掉Service的 "I" 字首
                            .controllerBuilder().enableRestStyle()//restful開啟
                            .enableHyphenStyle()//url改變 例如:index_id_1
                            .entityBuilder().enableLombok();//開啟lombok
                })
                //執行
                .execute();
    }

    // 處理 all 情況
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}

  • 執行效果