1打洼、AutoGenerator 簡(jiǎn)介
AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過(guò) AutoGenerator 可以快速生成 Entity逆粹、Mapper募疮、Mapper XML、Service僻弹、Controller 等各個(gè)模塊的代碼阿浓,極大的提升了開(kāi)發(fā)效率。
與 mybatis 中的 mybatis-generator-core 類似蹋绽。
2芭毙、添加依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!-- 添加 模板引擎 依賴 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
3、代碼分析
Step1:
創(chuàng)建一個(gè) 代碼生成器卸耘。用于生成代碼退敦。
此處不用修改。
// Step1:代碼生成器
AutoGenerator mpg = new AutoGenerator();
Step2:
配置全局信息蚣抗。指定代碼輸出路徑苛聘,以及包名、作者等信息。
此處按需添加设哗,projectPath 需要修改唱捣,setAuthor 需要修改。
// Step2:全局配置
GlobalConfig gc = new GlobalConfig();
// 填寫代碼生成的目錄(需要修改)
String projectPath = "E:\\myProject\\test\\test_mybatis_plus";
// 拼接出代碼最終輸出的目錄
gc.setOutputDir(projectPath + "/src/main/java");
// 配置開(kāi)發(fā)者信息(可選)(需要修改)
gc.setAuthor("lyh");
// 配置是否打開(kāi)目錄网梢,false 為不打開(kāi)(可選)
gc.setOpen(false);
// 實(shí)體屬性 Swagger2 注解震缭,添加 Swagger 依賴,開(kāi)啟 Swagger2 模式(可選)
//gc.setSwagger2(true);
// 重新生成文件時(shí)是否覆蓋战虏,false 表示不覆蓋(可選)
gc.setFileOverride(false);
// 配置主鍵生成策略拣宰,此處為 ASSIGN_ID(可選)
gc.setIdType(IdType.ASSIGN_ID);
// 配置日期類型,此處為 ONLY_DATE(可選)
gc.setDateType(DateType.ONLY_DATE);
// 默認(rèn)生成的 service 會(huì)有 I 前綴
gc.setServiceName("%sService");
mpg.setGlobalConfig(gc);
Step3:
配置數(shù)據(jù)源信息烦感。用于指定 需要生成代碼的 數(shù)據(jù)倉(cāng)庫(kù)巡社、數(shù)據(jù)表∈秩ぃ
setUrl晌该、setDriverName、setUsername绿渣、setPassword 均需修改朝群。
// Step3:數(shù)據(jù)源配置(需要修改)
DataSourceConfig dsc = new DataSourceConfig();
// 配置數(shù)據(jù)庫(kù) url 地址
dsc.setUrl("jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8");
// dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定數(shù)據(jù)庫(kù)名
// 配置數(shù)據(jù)庫(kù)驅(qū)動(dòng)
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// 配置數(shù)據(jù)庫(kù)連接用戶名
dsc.setUsername("root");
// 配置數(shù)據(jù)庫(kù)連接密碼
dsc.setPassword("123456");
mpg.setDataSource(dsc);
Step4:
配置包信息≈蟹
setParent姜胖、setModuleName 均需修改。其余按需求修改淀散。
// Step:4:包配置
PackageConfig pc = new PackageConfig();
// 配置父包名(需要修改)
pc.setParent("com.lyh.test");
// 配置模塊名(需要修改)
pc.setModuleName("test_mybatis_plus");
// 配置 entity 包名
pc.setEntity("entity");
// 配置 mapper 包名
pc.setMapper("mapper");
// 配置 service 包名
pc.setService("service");
// 配置 controller 包名
pc.setController("controller");
mpg.setPackageInfo(pc);
Step5:
配置數(shù)據(jù)表映射信息右莱。
setInclude 需要修改档插,其余按實(shí)際開(kāi)發(fā)修改慢蜓。
// Step5:策略配置(數(shù)據(jù)庫(kù)表配置)
StrategyConfig strategy = new StrategyConfig();
// 指定表名(可以同時(shí)操作多個(gè)表,使用 , 隔開(kāi))(需要修改)
strategy.setInclude("test_mybatis_plus_user");
// 配置數(shù)據(jù)表與實(shí)體類名之間映射的策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 配置數(shù)據(jù)表的字段與實(shí)體類的屬性名之間映射的策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 配置 lombok 模式
strategy.setEntityLombokModel(true);
// 配置 rest 風(fēng)格的控制器(@RestController)
strategy.setRestControllerStyle(true);
// 配置駝峰轉(zhuǎn)連字符
strategy.setControllerMappingHyphenStyle(true);
// 配置表前綴阀捅,生成實(shí)體時(shí)去除表前綴
// 此處的表名為 test_mybatis_plus_user,模塊名為 test_mybatis_plus针余,去除前綴后剩下為 user饲鄙。
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
Step6:
執(zhí)行代碼生成操作。
此處不用修改圆雁。
// Step6:執(zhí)行代碼生成操作
mpg.execute();
完整代碼:
package com.test.test_mybatis_plus;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;
public class TestAutoGenerate {
@Test
public void autoGenerate() {
// Step1:代碼生成器
AutoGenerator mpg = new AutoGenerator();
// Step2:全局配置
GlobalConfig gc = new GlobalConfig();
// 填寫代碼生成的目錄(需要修改)
String projectPath = "E:\\myProject\\test\\test_mybatis_plus";
// 拼接出代碼最終輸出的目錄
gc.setOutputDir(projectPath + "/src/main/java");
// 配置開(kāi)發(fā)者信息(可選)(需要修改)
gc.setAuthor("lyh");
// 配置是否打開(kāi)目錄忍级,false 為不打開(kāi)(可選)
gc.setOpen(false);
// 實(shí)體屬性 Swagger2 注解,添加 Swagger 依賴伪朽,開(kāi)啟 Swagger2 模式(可選)
//gc.setSwagger2(true);
// 重新生成文件時(shí)是否覆蓋轴咱,false 表示不覆蓋(可選)
gc.setFileOverride(false);
// 配置主鍵生成策略,此處為 ASSIGN_ID(可選)
gc.setIdType(IdType.ASSIGN_ID);
// 配置日期類型,此處為 ONLY_DATE(可選)
gc.setDateType(DateType.ONLY_DATE);
// 默認(rèn)生成的 service 會(huì)有 I 前綴
gc.setServiceName("%sService");
mpg.setGlobalConfig(gc);
// Step3:數(shù)據(jù)源配置(需要修改)
DataSourceConfig dsc = new DataSourceConfig();
// 配置數(shù)據(jù)庫(kù) url 地址
dsc.setUrl("jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8");
// dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定數(shù)據(jù)庫(kù)名
// 配置數(shù)據(jù)庫(kù)驅(qū)動(dòng)
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// 配置數(shù)據(jù)庫(kù)連接用戶名
dsc.setUsername("root");
// 配置數(shù)據(jù)庫(kù)連接密碼
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// Step:4:包配置
PackageConfig pc = new PackageConfig();
// 配置父包名(需要修改)
pc.setParent("com.lyh.test");
// 配置模塊名(需要修改)
pc.setModuleName("test_mybatis_plus");
// 配置 entity 包名
pc.setEntity("entity");
// 配置 mapper 包名
pc.setMapper("mapper");
// 配置 service 包名
pc.setService("service");
// 配置 controller 包名
pc.setController("controller");
mpg.setPackageInfo(pc);
// Step5:策略配置(數(shù)據(jù)庫(kù)表配置)
StrategyConfig strategy = new StrategyConfig();
// 指定表名(可以同時(shí)操作多個(gè)表朴肺,使用 , 隔開(kāi))(需要修改)
strategy.setInclude("test_mybatis_plus_user");
// 配置數(shù)據(jù)表與實(shí)體類名之間映射的策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 配置數(shù)據(jù)表的字段與實(shí)體類的屬性名之間映射的策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 配置 lombok 模式
strategy.setEntityLombokModel(true);
// 配置 rest 風(fēng)格的控制器(@RestController)
strategy.setRestControllerStyle(true);
// 配置駝峰轉(zhuǎn)連字符
strategy.setControllerMappingHyphenStyle(true);
// 配置表前綴窖剑,生成實(shí)體時(shí)去除表前綴
// 此處的表名為 test_mybatis_plus_user,模塊名為 test_mybatis_plus戈稿,去除前綴后剩下為 user西土。
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
// Step6:執(zhí)行代碼生成操作
mpg.execute();
}
}