1. 程式人生 > 其它 >Mybatis-Plus一鍵生成程式碼

Mybatis-Plus一鍵生成程式碼

Mybatis-Plus一鍵生成程式碼

一、閒言碎語

閒來無事看了看了MP的官網看到一鍵生成的程式碼更新了!

整個Ui風格都變了,遂決定瞅一眼新的程式碼生成器

官網地址~~

二、引入依賴

新的程式碼生成只有在MP的版本 >= 3.5.1才可以使用 並且不相容之前的版本

<!--        Mybatis-Plus依賴 注意和SpringBoot版本對應-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
<!--        Mybatis-Plus新增程式碼生成器依賴 3.5.1才可以使用新的程式碼生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
<!--        Mybatis-Plus新增程式碼生成器模板引擎-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
<!--  swagger可理解為介面文件規範      -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.6.2</version>
        </dependency>

swagger可取捨,如果開啟Lombok則可以不使用

三、配置

1、快速生成(簡介版)

FastAutoGenerator.create("url", "username", "password")
    .globalConfig(builder -> {
        builder.author("baomidou") // 設定作者
            .enableSwagger() // 開啟 swagger 模式
            .fileOverride() // 覆蓋已生成檔案
            .outputDir("D://"); // 指定輸出目錄
    })
    .packageConfig(builder -> {
        builder.parent("com.baomidou.mybatisplus.samples.generator") // 設定父包名
            .moduleName("system") // 設定父包模組名
            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") +)); // 設定mapperXml生成路徑 前邊是取專案路徑
    })
    .strategyConfig(builder -> {
        builder.addInclude("t_simple") // 設定需要生成的表名,不設定生成全表
            .addTablePrefix("t_", "c_"); // 設定過濾表字首
    })
    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,預設的是Velocity引擎模板
    .execute();

2、快速生成(詳細版)

public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/daydayup?useUnicode=true&useSSL=false&characterEncoding=utf8", "root", "root")
                .globalConfig(builder -> {
                    builder.author("知足") // 設定作者
                            .enableSwagger() // 開啟 swagger 模式  可理解為介面文件規範
                            .fileOverride() // 覆蓋已生成檔案
                            .outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定輸出目錄
                })
                .packageConfig(builder -> {
                    builder.parent("") // 設定父包名
                            .moduleName("") // 設定父包模組名
                            .entity("entity")
                            .controller("controller")
                            .service("service")
                            .serviceImpl("imp") //設定包名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/srca/main/resources/mapper/")); // 設定mapperXml生成路徑
                })
                .strategyConfig(builder -> {
                    builder.addInclude("表名")// 設定需要生成的表名 不使用該方法預設生成全表
                            .addTablePrefix("t_", "c_") // 設定過濾表字首
                            .serviceBuilder()//Service配置
                            .formatServiceFileName("%sService")//%s = 表名  表名Service
                            .formatServiceImplFileName("%sServiceImp")//同上
                            .entityBuilder()//實體類配置 一般都是表名
                            .enableLombok()//開啟Lombok 開啟 swagger 模式 就沒必要使用這個
                            .logicDeleteColumnName()//邏輯刪除欄位對應資料庫那個欄位
                            .logicDeletePropertyName()//邏輯刪除欄位對應實體類庫那個欄位
                            .controllerBuilder()//Controller配置
                            .formatFileName("%sController")
                            .enableRestStyle()//開啟生成@RestController控制器
                            .mapperBuilder()//mapper配置
                            .formatMapperFileName("%sMapper")
                            .formatXmlFileName("%sMapper")
                            .enableMapperAnnotation()//開啟@Mapper
                            .superClass(BaseMapper.class);//繼承的父類
                })
                // 使用Freemarker引擎模板,預設的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();//傻逼程式碼 生成完自己開啟目錄

    }

3、互動生成(暫未研究)

FastAutoGenerator.create(DATA_SOURCE_CONFIG)
    // 全域性配置
    .globalConfig((scanner, builder) -> builder.author(scanner.apply("請輸入作者名稱?")).fileOverride())
    // 包配置
    .packageConfig((scanner, builder) -> builder.parent(scanner.apply("請輸入包名?")))
    // 策略配置
    .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("請輸入表名,多個英文逗號分隔?所有輸入 all")))
                        .controllerBuilder().enableRestStyle().enableHyphenStyle()
                        .entityBuilder().enableLombok().addTableFills(
                                new Column("create_time", FieldFill.INSERT)
                        ).build())
    /*
        模板引擎配置,預設 Velocity 可選模板引擎 Beetl 或 Freemarker
       .templateEngine(new BeetlTemplateEngine())
       .templateEngine(new FreemarkerTemplateEngine())
     */
    .execute();


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

還有好多好玩的配置~不一一演示,生成完老是開啟生成檔案目錄,看原始碼是有一個Open()不知道怎麼讓他不開啟

迷途者尋影而行