Mybatis-Plus一鍵生成程式碼
阿新 • • 發佈:2021-12-24
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()不知道怎麼讓他不開啟
迷途者尋影而行