MyBatis-Plus逆向工程——Generator的使用
有一位志同道合的朋友給我留言說,MyBatis-Plus的逆向工程跟接口繼承BaseMapper有什么區(qū)別,我想了想,怎么解釋都不合適,最后決定出此文章進(jìn)行講解。
環(huán)境搭建
首先創(chuàng)建一張數(shù)據(jù)庫表
DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主鍵ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年齡', email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱', PRIMARY KEY (id) );
對應(yīng)的數(shù)據(jù)如下
DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com');
創(chuàng)建SpringBoot項(xiàng)目
創(chuàng)建一個(gè)普通的SpringBoot項(xiàng)目,然后引入依賴,既然要跟數(shù)據(jù)庫打交道,connector肯定不能少
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency>
另外要使用mybatis-plus,當(dāng)然也要引入該starter
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency>
由于需要用到逆向工程,所以引入依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency>
還需要一個(gè)模板引擎的依賴
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version> </dependency>
為了方便起見,這里引入Lombok
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
然后編寫一個(gè)類,直接執(zhí)行即可!
class AutoCode {
public static void main(String[] args) {
// 1、全局配置
GlobalConfig globalConfig = new GlobalConfig();//構(gòu)建全局配置對象
String projectPath = System.getProperty("user.dir");// 獲取當(dāng)前用戶的目錄
globalConfig
.setOutputDir(projectPath + "/mybatis-plus-01-start/src/main/java")// 輸出文件路徑
.setAuthor("微信搜一搜:賀賀學(xué)編程")// 設(shè)置作者名字
.setOpen(false)// 是否打開資源管理器
.setFileOverride(true)// 是否覆蓋原來生成的
.setIdType(IdType.AUTO)// 主鍵策略
.setBaseResultMap(true)// 生成resultMap
.setBaseColumnList(true)// XML中生成基礎(chǔ)列
.setServiceName("%sService");// 生成的service接口名字首字母是否為I,這樣設(shè)置就沒有I
// 2、數(shù)據(jù)源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();// 創(chuàng)建數(shù)據(jù)源配置
dataSourceConfig
.setUrl("jdbc:mysql://127.0.0.1:3306/mybatis_plus?userSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC")
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername("root")
.setPassword("root")
.setDbType(DbType.MYSQL);
// 3、包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig
.setParent("com.hzy")
.setEntity("entity")
.setController("controller")
.setService("service")
.setMapper("mapper");
// 4、策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)// 開啟全局大寫命名
.setInclude("user")// 設(shè)置要映射的表
.setNaming(NamingStrategy.underline_to_camel)// 下劃線到駝峰的命名方式
.setColumnNaming(NamingStrategy.underline_to_camel)// 下劃線到駝峰的命名方式
.setEntityLombokModel(false)// 是否使用lombok
.setRestControllerStyle(true)// 是否開啟rest風(fēng)格
.setControllerMappingHyphenStyle(true);// localhost:8080/hello_a_2
// 5、自定義配置(配置輸出xml文件到resources下)
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
List<FileOutConfig> focList = new ArrayList<>();
String templatePath = "/templates/mapper.xml.vm";
// 自定義配置會(huì)被優(yōu)先輸出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定義輸出文件名 , 如果你 Entity 設(shè)置了前后綴、此處注意 xml 的名稱會(huì)跟著發(fā)生變化??!
return projectPath + "/mybatis-plus-01-start/src/main/resources/mapper/"
+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
// 6、整合配置
AutoGenerator autoGenerator = new AutoGenerator();// 構(gòu)建代碼生自動(dòng)成器對象
autoGenerator
.setGlobalConfig(globalConfig)// 將全局配置放到代碼生成器對象中
.setDataSource(dataSourceConfig)// 將數(shù)據(jù)源配置放到代碼生成器對象中
.setPackageInfo(packageConfig)// 將包配置放到代碼生成器對象中
.setStrategy(strategyConfig)// 將策略配置放到代碼生成器對象中
.setCfg(cfg)// 將自定義配置放到代碼生成器對象中
.execute();// 執(zhí)行!
}
}
執(zhí)行結(jié)果如下

代碼中的注釋比較多,我就不多說了
到此這篇關(guān)于MyBatis-Plus逆向工程——Generator的使用的文章就介紹到這了,更多相關(guān)MyBatis-Plus逆向工程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot在filter中如何用threadlocal存放用戶身份信息
這篇文章主要介紹了springboot中在filter中如何用threadlocal存放用戶身份信息,本文章主要描述通過springboot的filter類,在過濾器中設(shè)置jwt信息進(jìn)行身份信息保存的方法,需要的朋友可以參考下2024-07-07
Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解
Spring?Cloud?Ribbon?是基于Netflix?Ribbon?實(shí)現(xiàn)的一套客戶端負(fù)載均衡工具,Ribbon客戶端組件提供了一系列的完善的配置,如超時(shí),重試等,這篇文章主要介紹了Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解,需要的朋友可以參考下2023-03-03
Java函數(shù)式編程之通過行為參數(shù)化傳遞代碼
行為參數(shù)化就是可以幫助你處理頻繁變更的需求的一種軟件開發(fā)模式,這篇文章將給大家詳細(xì)的介紹一下Java函數(shù)式編程之行為參數(shù)化傳遞代碼,感興趣的同學(xué)可以參考閱讀下2023-08-08
Java如何實(shí)現(xiàn)數(shù)據(jù)壓縮所有方式性能測試
本文介紹了多種壓縮算法及其在Java中的實(shí)現(xiàn),包括LZ4、BZip2、Deflate、Gzip和7z等,LZ4以其高效的壓縮和解壓縮速度而受到青睞,特別是在大數(shù)據(jù)處理場景中,通過對比不同壓縮算法的性能和壓縮率,我們選擇了最適合當(dāng)前項(xiàng)目需求的壓縮工具2025-02-02

