mybatis-plus最新版程式碼生成器(Swagger3)
阿新 • • 發佈:2021-10-13
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(",")); } }
- 執行效果