MyBatis 框架需要:实体类、自定义 Mapper 接口、Mapper.xml
传统的开发中上述的三个组件需要开发者手动创建,逆向工程可以帮助开发者来自动创建三个组件,减轻开发者的工作量,提高工作效率。
新建maven项目,pom.xml中的依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
创建 MBG 配置文件 generatorConfig.xml
1、jdbcConnection 配置数据库连接信息。
2、javaModelGenerator 配置 JavaBean 的生成策略。
3、sqlMapGenerator 配置 SQL 映射文件生成策略。
4、javaClientGenerator 配置 Mapper 接口的生成策略。
5、table 配置目标数据表(tableName:表名,domainObjectName:JavaBean 类名)。
<?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>
<context id="testTables" targetRuntime="Mybatis3">
<jdbcConnection
driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatistest?serverTimezone=UTC&useUnicode=true&character=UTF-8&useSSL=false"
userId="root"
password="123456"/>
<javaModelGenerator targetPackage="org.dawn.entity" targetProject=".\src\main\java"/>
<sqlMapGenerator targetPackage="org.dawn.repository" targetProject=".\src\main\java"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="org.dawn.repository" targetProject=".\src\main\java"/>
<table tableName="t_account" domainObjectName="Account"/>
</context>
</generatorConfiguration>
在之后测试代码时发现这里有一些问题
1.如果测试最后报错:
closing inbound before receiving peer's close_notify
在<jdbcConnection/>块中的connectionURL后再加上useSSL=false即可
2.如果测试最后报错:
This is not a MyBatis Generator Configuration File
检查文件头是否写错,大小写不能写错了,特别是有一处“MyBatis”的B要大写
创建 Generator 执行类
这部分比较死板,格式整体如下
package org.dawn.test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
String genCig = "/generatorConfig.xml";
File configFile = new File(Main.class.getResource(genCig).getFile());
ConfigurationParser configurationParser = new ConfigurationParser(warnings);
Configuration configuration = null;
try {
configuration = configurationParser.parseConfiguration(configFile);
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
}
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = null;
try {
myBatisGenerator = new MyBatisGenerator(configuration, callback, warnings);
} catch (InvalidConfigurationException e) {
e.printStackTrace();
}
try {
myBatisGenerator.generate(null);
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}