Spring Boot 整合 Mybatis Generator
阿新 • • 發佈:2022-06-01
專案依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <!--SpringBoot通用依賴模組--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--整合druid連線池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> <!-- MyBatis 生成器 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> <!--Mysql資料庫驅動--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> </dependencies>
修改spring boot 配置檔案
在application.yml新增資料來源和mapper.xml路徑
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/lsv?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: 123456 mybatis: mapper-locations: - classpath:mapper/*.xml - classpath*:com/**/mapper/*.xml
Mybatis generator 配置檔案
配置資料庫連線,Mybatis generator生成model、mapper介面及mapper.xml的路徑。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <properties resource="generator.properties"/> <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat"> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <property name="javaFileEncoding" value="UTF-8"/> <!-- 為模型生成序列化方法--> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <!-- 為生成的Java模型建立一個toString方法 --> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <!--生成mapper.xml時覆蓋原檔案--> <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /> <commentGenerator type="com.gt.lsv.CommentGenerator"> <!-- 是否去除自動生成的註釋 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> <property name="suppressDate" value="true"/> <property name="addRemarkComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}"> <!--解決mysql驅動升級到8.0後不生成指定資料庫程式碼的問題--> <property name="nullCatalogMeansCurrent" value="true" /> </jdbcConnection> <javaModelGenerator targetPackage="com.gt.lsv.model" targetProject="H:\LSVProject\LSV\lsv_mgb\src\main\java"/> <sqlMapGenerator targetPackage="com.gt.lsv.mapper" targetProject="H:\LSVProject\LSV\lsv_mgb\src\main\resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.gt.lsv.mapper" targetProject="H:\LSVProject\LSV\lsv_mgb\src\main\java"/> <!--生成全部表tableName設為%--> <table tableName="%"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> </table> </context> </generatorConfiguration>
執行Generator的main函式生成程式碼
package com.gt.lsv;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @Description MGB生成程式碼
* @Author ChenJG
* @create 2022/5/12 16:55
*/
public class Generator {
public static void main(String[] args) throws Exception {
//MBG 執行過程中的警告資訊
List<String> warnings = new ArrayList<>();
//當生成的程式碼重複時,覆蓋原始碼
boolean overwrite = true;
//讀取我們的 MBG 配置檔案
InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(is);
is.close();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
//建立 MBG
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
//執行生成程式碼
myBatisGenerator.generate(null);
//輸出警告資訊
for (String warning : warnings) {
System.out.println(warning);
}
}
}
新增MyBatis的Java配置
用於動態生成mapper的路徑
package com.gt.lsv.portal.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
/**
* @Description MB Config
* @Author ChenJG
* @create 2022/5/20 20:15
*/
@Configuration
@MapperScan("com.gt.lsv.mapper")
public class MybatisConfig {
}