参考文档: https://github.com/abel533/Mapper/wiki/4.1.mappergenerator
原生 MyBatis 逆向工程和通用 Mapper 逆向工程对比:
1、引入相关依赖
<dependencies>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0-beta3</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
2、在pom.xml文件中添加properties
<properties>
<!-- ${basedir}引用工程根目录 -->
<!-- targetJavaProject:声明存放源码的目录位置 -->
<targetJavaProject>${basedir}/src/main/java</targetJavaProject>
<!-- targetMapperPackage:声明MBG生成XxxMapper接口后存放的package位置 -->
<targetMapperPackage>com.atguigu.shop.mappers</targetMapperPackage>
<!-- targetModelPackage:声明MBG生成实体类后存放的package位置 -->
<targetModelPackage>com.atguigu.shop.entities</targetModelPackage>
<!-- targetResourcesProject:声明存放资源文件和XML配置文件的目录位置 -->
<targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
<!-- targetXMLPackage:声明存放具体XxxMapper.xml文件的目录位置 -->
<targetXMLPackage>mappers</targetXMLPackage>
<!-- 通用Mapper的版本号 -->
<mapper.version>4.0.0-beta3</mapper.version>
<!-- MySQL驱动版本号 -->
<mysql.version>5.1.37</mysql.version>
</properties>
3、在pom.xml文件中添加plugin
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<!-- 配置generatorConfig.xml配置文件的路径 -->
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<!-- MBG插件的依赖信息 -->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
4、创建config.properties
# Database connection information
jdbc.driverClass = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/mapper
jdbc.user = root
jdbc.password = root
#c3p0
jdbc.maxPoolSize=50
jdbc.minPoolSize=10
jdbc.maxStatements=100
jdbc.testConnection=true
# mapper
mapper.plugin = tk.mybatis.mapper.generator.MapperPlugin
mapper.Mapper = tk.mybatis.mapper.common.Mapper
5、创建generatorConfig.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="config.properties" />
<context id="Mysql" targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<!-- 配置通用Mapper的MBG插件相关信息 -->
<plugin type="${mapper.plugin}">
<property name="mappers" value="${mapper.Mapper}" />
</plugin>
<!-- 配置连接数据库的基本信息 -->
<jdbcConnection
driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.user}"
password="${jdbc.password}">
</jdbcConnection>
<!-- 配置Java实体类存放位置 -->
<javaModelGenerator
targetPackage="${targetModelPackage}"
targetProject="${targetJavaProject}" />
<!-- 配置XxxMapper.xml存放位置 -->
<sqlMapGenerator
targetPackage="${targetXMLPackage}"
targetProject="${targetResourcesProject}" />
<!-- 配置XxxMapper.java存放位置 -->
<javaClientGenerator
targetPackage="${targetMapperPackage}"
targetProject="${targetJavaProject}"
type="XMLMAPPER" />
<!-- 根据数据库表生成Java文件的相关规则 -->
<!-- tableName="%"表示数据库中所有表都参与逆向工程,此时使用默认规则 -->
<!-- 默认规则:table_dept→TableDept -->
<!-- 不符合默认规则时需要使用tableName和domainObjectName两个属性明确指定 -->
<table tableName="tabple_emp" domainObjectName="Employee">
<!-- 配置主键生成策略 -->
<generatedKey column="emp_id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
6、运行逆向工程
在pom.xml 这一级目录的命令行窗口。执行maven命令mvn mybatis-generator:generate
测试:
创建mybatis配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入外部属性文件 -->
<properties resource="jdbc.properties"/>
<!-- 配置MyBatis运行环境 -->
<environments default="development">
<!-- 配置专门用于开发过程的运行环境 -->
<environment id="development">
<!-- 配置事务管理器 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.atguigu.shop.mappers"/>
</mappers>
</configuration>
编写测试类MBGTest
public class MBGTest {
public static void main(String[] args) {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
InputStream inputStream = MBGTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = builder.build(inputStream);
SqlSession session = factory.openSession();
//按照Java方式整合通用Mapper的特殊设置
//i.创建MapperHelper对象
MapperHelper mapperHelper = new MapperHelper();
//ii.通过MapperHelper对象对MyBatis原生的Configuration对象进行处理
Configuration configuration = session.getConfiguration();
mapperHelper.processConfiguration(configuration);
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
Iterator<Employee> iterator = mapper.selectAll().iterator();
while (iterator.hasNext()) {
Employee employee = iterator.next();
System.out.println(employee);
}
}
}