mybatis-plus最新版程式碼生成器(Swagger3)
- 2021 年 10 月 13 日
- 筆記
- mybatis-plus
寫項目想用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(","));
}
}
- 執行效果