天天看點

springboot使用mybatis-plus逆向工程+oraclespringboot使用mybatis-plus逆向工程

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();
	}


}

           

繼續閱讀