springboot使用mybatis-plus逆向工程
前言
1.這個配置針對的是oracle資料庫
2.針對的是springboot項目
1.pom.xml添加相關的依賴
<!-- mybatis-plus逆向工程依賴 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<!-- freemarker 說明:mybatis-plus逆向工程需要freemarker模闆引擎 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
說明:
前提是要引入mybatis-plus相關依賴
2.編寫配置類
package com.fct.config;
import com.baomidou.mybatisplus.annotation.DbType;
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.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
/**
* 代碼生成器
*
* <p>
* 根據資料庫中的表生成:資料庫表映射對象、Mapper 接口、Mapper XML 檔案(含基礎的 ResultMap 和字段代碼片段)、 Service
* 接口、Service 接口實作累、基礎的 Controller 類。
* </p>
* <p>
* 如果資料庫設計符合規範,并且代碼沒有特殊要求。設定好表名字首(無則忽略)、表字段字首(無則忽略)後, 直接修改輸出的路徑、JDBC
* Url、資料庫的賬戶和密碼即可直接生成代碼。
* </p>
* <p>
* 生成後将 Mapper 中的 xml 包中的 XML 檔案移動到 resource 下即可,XML 存放檔案夾名為 Mapper
* 接口包名(全包名)的同名檔案夾<br/>
* 如 Mapper 接口包名為:com.example.mapper,那麼在 resource 下建立同名檔案夾:com.example.mapper,将
* xml 檔案移動到該檔案夾下即可。
* </p>
*
* @author wayne
* @since 2020-01-08 23:00
*/
public class MappingGeneratorOracle {
/**
* 生成代碼輸出路徑,<strong>路徑必須是絕對路徑,不需要包含包名</strong>
*/
private static final String OUTPUT_DIR = ".\\src\\main\\resources\\genertor";
/**
* 生成代碼輸出的包名
* <p>
* 總包名,後續生成的 Mapper,Service 等将在該包下生成子包
* </p>
*/
private static final String PACKAGE = "com.shaoming";
/**
* JDBC URL 說明: url位址前需要加上@,否則會報錯
*/
private static final String JDBC_URL = "jdbc:oracle:thin:@192.168.200.228:1521:orcl";
/**
* 資料庫賬戶
*/
private static final String DB_USERNAME = "scott";
/**
* 資料庫賬戶密碼
*/
private static final String DB_PASSWORD = "tiger";
/**
* 執行即可生成代碼 需要添加 freemarker 依賴 <dependency> <groupId>org.freemarker</groupId>
* <artifactId>freemarker</artifactId> <version>2.3.29</version> </dependency>
*/
// 不要在src/main/java裡面使用main方法,否則springboot項目某人為main方法的類就是啟動類
// public static void main(String[] args) {
// autoGenerator().execute();
// }
public static AutoGenerator autoGenerator() {
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig());
autoGenerator.setDataSource(oracleDataSourceConfig());
autoGenerator.setStrategy(strategyConfig());
autoGenerator.setPackageInfo(packageConfig());
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
return autoGenerator;
}
/**
* 全局配置
*
* @return {@link GlobalConfig}
*/
private static GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setAuthor("shaoming");
// 設定代碼輸出位置,需要絕對路徑
globalConfig.setOutputDir(OUTPUT_DIR);
// 覆寫已有的代碼
globalConfig.setFileOverride(false);
// 基本表的 ResultMap
globalConfig.setBaseResultMap(true);
// 基本表字段片段
globalConfig.setBaseColumnList(true);
// 開啟基于 Model 操作資料庫
globalConfig.setActiveRecord(true);
// 設定 ID 類型
globalConfig.setIdType(IdType.NONE);
// 生成基本 Swagger2 文檔
globalConfig.setSwagger2(true);
// 開啟二級緩存
globalConfig.setEnableCache(true);
// 設定生成的對象名稱規則,%s 表示目前的 Entity
// 資料庫表映射對象名稱規則
globalConfig.setEntityName("%s");
// 也可以使用下面這種就是末尾會以DO結尾
// globalConfig.setEntityName("%sDO");
// Mapper 接口名稱規則
globalConfig.setMapperName("%sDao");
// Mapper XML 檔案名稱規則
globalConfig.setXmlName("%sMapper");
// Controller 生成規則
globalConfig.setControllerName("%sController");
// Service 接口生成名稱規則
globalConfig.setServiceName("%sService");
// Service 實作類生成名稱規則
globalConfig.setServiceImplName("%sServiceImpl");
return globalConfig;
}
/**
* 生成政策配置
*
* @return StrategyConfig
*/
private static StrategyConfig strategyConfig() {
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setCapitalMode(false);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
// TODO 填寫表字首、表字段字首,生成代碼時去除字段字首
strategyConfig.setTablePrefix("tb_");
strategyConfig.setFieldPrefix("a_", "c_", "e_", "f_", "p_", "r_", "t_", "tf_");
return strategyConfig;
}
/**
* MySQL 資料源配置
*
* @return DataSourceConfig
*/
private static DataSourceConfig oracleDataSourceConfig() {
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.ORACLE);
dataSourceConfig.setTypeConvert(new MySqlTypeConvert());
dataSourceConfig.setDriverName("oracle.jdbc.driver.OracleDriver");
dataSourceConfig.setUrl(JDBC_URL);
dataSourceConfig.setUsername(DB_USERNAME);
dataSourceConfig.setPassword(DB_PASSWORD);
return dataSourceConfig;
}
/**
* 包相關配置資訊
* <p>
* 配置生成代碼的包資訊,如生成的 Mapper 包,Service 包等
* </p>
*/
private static PackageConfig packageConfig() {
PackageConfig packageConfig = new PackageConfig();
// 設定父包
packageConfig.setParent(PACKAGE);
// TODO 設定生成代碼的包
// Controller 包
packageConfig.setController("controller");
// 資料庫表映射對象包
packageConfig.setEntity("pojo.entity");
// Mapper 接口包,含 XML 檔案
packageConfig.setMapper("mapper");
// Service 接口包
packageConfig.setService("service");
// Service 接口實作類包
packageConfig.setServiceImpl("service.impl");
return packageConfig;
}
}
說明:
修改上述代碼如下配置,其餘預設就可以
重要的配置如下
/**
* 生成代碼輸出路徑,<strong>路徑必須是絕對路徑,不需要包含包名</strong>
*/
private static final String OUTPUT_DIR = ".\\src\\main\\resources\\genertor";
/**
* 生成代碼輸出的包名
* <p>
* 總包名,後續生成的 Mapper,Service 等将在該包下生成子包
* </p>
*/
private static final String PACKAGE = "com.shaoming";
/**
* JDBC URL 說明: url位址前需要加上@,否則會報錯
*/
private static final String JDBC_URL = "jdbc:oracle:thin:@192.168.200.228:1521:orcl";
/**
* 資料庫賬戶
*/
private static final String DB_USERNAME = "scott";
/**
* 資料庫賬戶密碼
*/
private static final String DB_PASSWORD = "tiger";
3.配置一個app測試類進行代碼生成
package com.fct.test;
import java.util.Date;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class App {
//mybatis-plus逆向工程
@Test
public void testMappingGeneratorOracle() {
MappingGeneratorOracle.autoGenerator().execute();
}
}