基于Mybatis plus 自動(dòng)代碼生成器的實(shí)現(xiàn)代碼
1.使用的是maven項(xiàng)目,添加依賴
<!-- mybatis-plus begin -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.2.0</version>
</dependency>
還有數(shù)據(jù)庫(kù)的連接
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>compile</scope>
</dependency>
最后是源碼
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.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;
/**
* mybatis-plus 自動(dòng)生成代碼
*
* @author Terry
* @version 1.0
* @date 2018-05-16 09:35
*/
public class SimpleMp {
@Test
public void generateCode() {
//指定包名
String packageName = "com.hciot.hhhh";
//user -> UserService, 設(shè)置成true: user -> IUserService
boolean serviceNameStartWithI = false;
//指定生成的表名
String[] tableNames = new String[]{"data_air_sensor_co", "order_product", "relation_device_gateway"};
generateByTables(serviceNameStartWithI, packageName, tableNames);
}
/**
* 根據(jù)表自動(dòng)生成
*
* @param serviceNameStartWithI 默認(rèn)為false
* @param packageName 包名
* @param tableNames 表名
* @author Terry
*/
private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
//配置數(shù)據(jù)源
DataSourceConfig dataSourceConfig = getDataSourceConfig();
// 策略配置
StrategyConfig strategyConfig = getStrategyConfig(tableNames);
//全局變量配置
GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI);
//包名配置
PackageConfig packageConfig = getPackageConfig(packageName);
//自動(dòng)生成
atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig);
}
/**
* 集成
*
* @param dataSourceConfig 配置數(shù)據(jù)源
* @param strategyConfig 策略配置
* @param config 全局變量配置
* @param packageConfig 包名配置
* @author Terry
*/
private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) {
new AutoGenerator()
.setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig)
.execute();
}
/**
* 設(shè)置包名
*
* @param packageName 父路徑包名
* @return PackageConfig 包名配置
* @author Terry
*/
private PackageConfig getPackageConfig(String packageName) {
return new PackageConfig()
.setParent(packageName)
.setXml("mapper")
.setMapper("dao")
.setController("controller")
.setEntity("entity");
}
/**
* 全局配置
*
* @param serviceNameStartWithI false
* @return GlobalConfig
* @author Terry
*/
private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig
.setBaseColumnList(true)
.setBaseResultMap(true)
.setActiveRecord(false)
.setAuthor("Terry")
//設(shè)置輸出路徑
.setOutputDir(getOutputDir("mybatis-plus"))
.setFileOverride(true);
if (!serviceNameStartWithI) {
//設(shè)置service名
globalConfig.setServiceName("%sService");
}
return globalConfig;
}
/**
* 返回項(xiàng)目路徑
*
* @param projectName 項(xiàng)目名
* @return 項(xiàng)目路徑
* @author Terry
*/
private String getOutputDir(String projectName) {
String path = this.getClass().getClassLoader().getResource("").getPath();
int index = path.indexOf(projectName);
return path.substring(1, index) + projectName + "/src/main/java/";
}
/**
* 策略配置
*
* @param tableNames 表名
* @return StrategyConfig
* @author Terry
*/
private StrategyConfig getStrategyConfig(String... tableNames) {
return new StrategyConfig()
// 全局大寫(xiě)命名 ORACLE 注意
.setCapitalMode(true)
.setEntityLombokModel(false)
// 表名、字段名、是否使用下劃線命名(默認(rèn) false)
.setDbColumnUnderline(true)
//從數(shù)據(jù)庫(kù)表到文件的命名策略
.setNaming(NamingStrategy.underline_to_camel)
//需要生成的的表名,多個(gè)表名傳數(shù)組
.setInclude(tableNames);
}
/**
* 配置數(shù)據(jù)源
*
* @return 數(shù)據(jù)源配置 DataSourceConfig
* @author Terry
*/
private DataSourceConfig getDataSourceConfig() {
String dbUrl = "jdbc:mysql://localhost:3306/test";
return new DataSourceConfig().setDbType(DbType.MYSQL)
.setUrl(dbUrl)
.setUsername("root")
.setPassword("root")
.setDriverName("com.mysql.jdbc.Driver");
}
/**
* 根據(jù)表自動(dòng)生成
*
* @param packageName 包名
* @param tableNames 表名
* @author Terry
*/
@SuppressWarnings("unused")
private void generateByTables(String packageName, String... tableNames) {
generateByTables(true, packageName, tableNames);
}
}
總結(jié)
以上所述是小編給大家介紹的基于Mybatis plus 自動(dòng)代碼生成器的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java?Web實(shí)戰(zhàn)之使用三層架構(gòu)與Servlet構(gòu)建登錄注冊(cè)模塊
這篇文章介紹了如何使用三層架構(gòu)(View,?Service,?DAO)和JDBCTemplate技術(shù)在JavaWeb環(huán)境下實(shí)現(xiàn)登錄和注冊(cè)功能,詳細(xì)說(shuō)明了構(gòu)建項(xiàng)目的步驟,包括創(chuàng)建數(shù)據(jù)庫(kù)表、實(shí)體類、DAO層、Service層、Servlet處理及頁(yè)面設(shè)計(jì),需要的朋友可以參考下2024-10-10
Spring的IOC解決程序耦合的實(shí)現(xiàn)
本文主要介紹了Spring的IOC解決程序耦合的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java兩種常用的隨機(jī)數(shù)生成方式(小白總結(jié))
這篇文章主要介紹了Java兩種常用的隨機(jī)數(shù)生成方式(小白總結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
java工廠實(shí)例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析
這篇文章主要為大家介紹了BeanFactoryPostProcessor和BeanPostProcessor區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Java?嵌入數(shù)據(jù)引擎從?SQLite?到?SPL詳解
這篇文章主要介紹了Java?嵌入數(shù)據(jù)引擎:從?SQLite?到?SPL,SQLite架構(gòu)簡(jiǎn)單,其核心雖然是C語(yǔ)言開(kāi)發(fā)的,但封裝得比較好,對(duì)外呈現(xiàn)為一個(gè)小巧的Jar包,能方便地集成在Java應(yīng)用中,本文給大家介紹的非常詳細(xì),需要的朋友參考下2022-07-07
Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹(shù)詳解
二叉搜索樹(shù)作為一個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時(shí)查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹(shù)的原理與實(shí)現(xiàn),需要的可以參考一下2022-06-06
Spring Security學(xué)習(xí)筆記(一)
這篇文章主要介紹了Spring Security的相關(guān)資料,幫助大家開(kāi)始學(xué)習(xí)Spring Security框架,感興趣的朋友可以了解下2020-09-09

