有一位志同道合的朋友給我留言說,MyBatis-Plus的逆向工程跟介面繼承BaseMapper有什么區別,我想了想,怎么解釋都不合適,最后決定出此文章進行講解,
環境搭建
首先創建一張資料庫表
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)
);
對應的資料如下
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');
創建SpringBoot專案
創建一個普通的SpringBoot專案,然后引入依賴,既然要跟資料庫打交道,connector肯定不能少
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
另外要使用mybatis-plus,當然也要引入該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>
還需要一個模板引擎的依賴
<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>
然后撰寫一個類,直接執行即可!
class AutoCode {
public static void main(String[] args) {
// 1、全域配置
GlobalConfig globalConfig = new GlobalConfig();//構建全域配置物件
String projectPath = System.getProperty("user.dir");// 獲取當前用戶的目錄
globalConfig
.setOutputDir(projectPath + "/mybatis-plus-01-start/src/main/java")// 輸出檔案路徑
.setAuthor("微信搜一搜:賀賀學編程")// 設定作者名字
.setOpen(false)// 是否打開資源管理器
.setFileOverride(true)// 是否覆寫原來生成的
.setIdType(IdType.AUTO)// 主鍵策略
.setBaseResultMap(true)// 生成resultMap
.setBaseColumnList(true)// XML中生成基礎列
.setServiceName("%sService");// 生成的service介面名字首字母是否為I,這樣設定就沒有I
// 2、資料源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();// 創建資料源配置
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")// 設定要映射的表
.setNaming(NamingStrategy.underline_to_camel)// 下劃線到駝峰的命名方式
.setColumnNaming(NamingStrategy.underline_to_camel)// 下劃線到駝峰的命名方式
.setEntityLombokModel(false)// 是否使用lombok
.setRestControllerStyle(true)// 是否開啟rest風格
.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";
// 自定義配置會被優先輸出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定義輸出檔案名 , 如果你 Entity 設定了前后綴、此處注意 xml 的名稱會跟著發生變化!!
return projectPath + "/mybatis-plus-01-start/src/main/resources/mapper/"
+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
// 6、整合配置
AutoGenerator autoGenerator = new AutoGenerator();// 構建代碼生自動成器物件
autoGenerator
.setGlobalConfig(globalConfig)// 將全域配置放到代碼生成器物件中
.setDataSource(dataSourceConfig)// 將資料源配置放到代碼生成器物件中
.setPackageInfo(packageConfig)// 將包配置放到代碼生成器物件中
.setStrategy(strategyConfig)// 將策略配置放到代碼生成器物件中
.setCfg(cfg)// 將自定義配置放到代碼生成器物件中
.execute();// 執行!
}
}
執行結果如下

代碼中的注釋比較多,我就不多說了,如果有什么問題可以進行私信~
微信搜一搜【賀賀學編程】關注這個不一樣的程式員,關注后回復【面試】獲取海量面試題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/246832.html
標籤:java
