前言
我們在使用 MyBatis-Plus 框架進行開發時,可以使用 MyBatis-Plus 官方提供的代碼生成器(AutoGenerator )來簡化開發,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發效率。下面我們就來使用 AutoGenerator 進行實際的代碼生成案例。
一、開發環境
- JDK 1.8.0_152
- Spring Boot 2.2.7
- MyBatis-Plus 3.3.1
- Apache Maven 3.6.1
- IntelliJ IDEA 2020.1
二、使用教程
1、導入依賴
需要注意的是,MyBatis-Plus 從
3.0.3
之後就移除了代碼生成器與模板引擎的默認依賴,所以我們需要手動添加相關依賴。
-
添加 springboot 依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
-
添加 代碼生成器 依賴
使用代碼生成器只需單獨添加代碼生成器依賴即可,而不用導入mybatis-plus的依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.1</version> </dependency>
-
添加 數據庫驅動 依賴
代碼生成器需要讀取數據庫中的表,所以需要添加數據庫相關依賴
<!-- mysql驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
-
添加 模板引擎 依賴
MyBatis-Plus 支持 Velocity(默認)、Freemarker、Beetl,用戶可以選擇自己熟悉的模板引擎,如果都不滿足您的要求,可以採用自定義模板引擎。這裏我直接採用默認的模板引擎。
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency>
2、編寫配置類
直接上代碼,本人自己開發時使用的模板(註釋已經幫各位寫好了,嘻嘻)
public class CodeGenerator {
/**
* 功能描述: 讀取控制檯內容
*
* @param tip
* @return java.lang.String
* @author xiaoming
* @date 2020-5-23
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("請輸入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("請輸入正確的" + tip + "!");
}
/**
* 功能描述: 代碼生成器
*
* @param args
* @return void
* @author xiaoming
* @date 2020-5-23
*/
public static void main(String[] args) {
// 1、創建代碼生成器
AutoGenerator mpg = new AutoGenerator();
// 2、創建全局配置
GlobalConfig gc = new GlobalConfig();
// 獲取當前項目的路徑
String projectPath = System.getProperty("user.dir");
// 文件輸出路徑
gc.setOutputDir(projectPath + "/src/main/java");
// 指定作者
gc.setAuthor("xiaoming");
// 生成後是否打開資源管理器
gc.setOpen(false);
// 重新生成時文件是否覆蓋
gc.setFileOverride(false);
// 去掉Service接口的首字母I
gc.setServiceName("%sService");
// 主鍵生成策略
gc.setIdType(IdType.AUTO);
// 定義生成的實體類中日期類型
gc.setDateType(DateType.ONLY_DATE);
// 實體屬性 Swagger2 註解
gc.setSwagger2(true);
// 將全局配置設置到代碼生成器對象中
mpg.setGlobalConfig(gc);
// 3、創建數據源配置
DataSourceConfig dsc = new DataSourceConfig();
// 數據庫連接
dsc.setUrl("jdbc:mysql://localhost:3306/xm_admin?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
// 數據庫驅動
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// 用戶名
dsc.setUsername("root");
// 密碼
dsc.setPassword("root");
// 數據庫類型
dsc.setDbType(DbType.MYSQL);
// 將數據庫配置設置到代碼生成器對象中
mpg.setDataSource(dsc);
// 4、創建包配置
PackageConfig pc = new PackageConfig();
// 模塊名(在控制檯輸入)
pc.setModuleName(scanner("模塊名"));
// 生成文件的上級包
pc.setParent("com.xiaoming.springboot");
// 設置具體包名
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("mapper");
// 將包配置設置到代碼生成器對象中
mpg.setPackageInfo(pc);
// 5、創建策略配置
StrategyConfig strategy = new StrategyConfig();
// 數據庫表名下劃線轉駝峯命名
strategy.setNaming(NamingStrategy.underline_to_camel);
// 數據庫列名下劃線轉駝峯命名
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 設置lombok模型
strategy.setEntityLombokModel(true);
// restful api風格控制器
strategy.setRestControllerStyle(true);
// 表名(控制檯輸入)
strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
// url中駝峯轉連字符
strategy.setControllerMappingHyphenStyle(true);
// 生成實體時去掉表前綴
strategy.setTablePrefix(pc.getModuleName() + "_");
// 將生成策略配置設置到代碼生成器對象中
mpg.setStrategy(strategy);
// 6、開始生成代碼
mpg.execute();
}
}
3、生成代碼
直接點擊類中的main方法運行即可,或者你可以將代碼放入test包下,因爲我們只在開發時纔會用到這個類。
直接給大家錄製了一個GIF圖:
如圖所示,代碼已經生產完畢,是不是相當方便,我們只需要編寫我們的業務邏輯的代碼即可。
本篇參考mybatis-plus官方文檔編寫 官方文檔