在日常开发工作中,我们往往需要自己去构建各种数据表所对应的持久化对象(POJO)、用于操作数据库的接口(DAO)以及跟 DAO 所绑定的对应 XML。这都是一些重复性的操作,不需要多大技术含量。MyBatis Generator工具,能够帮助我们去自动生成这些文件。
MyBatis Generator 简介
作为一个基于 MyBatis 的独立工具,MyBatis Generator 能够满足我们以上的要求,能够通过简单的配置去帮我们生成数据表所对应的 POJO、DAO、XML 等文件,减去我们手动去生成这些文件的时间,有效提高开发效率。MyBatis Generator 运行方式多样,主要可以通过以下几种方式来运行:
- 命令行
- Ant
- Maven
- Java
- IDE
Mybatis Generator简称 MBG,是一个专门为 MyBatis和 ibatis框架使用者提供的代码生成器。也可以快速的根据数据表生成对应的pojo类、Mapper接口、Mapper文件,甚至生成QBC风格的查询对象。
MyBatis Generator的使用
使用 MyBatis Generator,需要在项目中配置了数据库和 MyBatis 的相关依赖。
- 引入插件
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- mybatis-generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
配置生成器文件
<?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>
<!--targetRuntime="MyBatis3"-->
<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
<!-- 生成的Java文件的编码 -->
<property name="javaFileEncoding" value="UTF-8" />
<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<!-- 注释生成器 -->
<commentGenerator>
<property name="suppressDate" value="true" />
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 必须要有的,使用这个配置链接数据库 @TODO:是否可以扩展 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root"
password="1111">
</jdbcConnection>
<!-- 生成domain对象 -->
<javaModelGenerator targetPackage="com.sunny.domain" targetProject="mybatis-11_MBG/src/main/java">
<property name="enableSubPackages" value="true" />
</javaModelGenerator>
<!-- 生成Mapper文件 -->
<sqlMapGenerator targetPackage="com.sunny.mapper" targetProject="mybatis-11_MBG/\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成Mapper接口 -->
<javaClientGenerator targetPackage="com.sunny.mapper" type="XMLMAPPER"
targetProject="mybatis-11_MBG/src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- Table To POJO -->
<!--domainObjectName="User"-->
<table tableName="user2" delimitIdentifiers="true">
<property name="useActualColumnNames" value="true" />
<generatedKey column="id" sqlStatement="JDBC" />
</table>
</context>
</generatorConfiguration>
配置文件极为重要,对应数据库表生成POJO对象的映射关系由配置文件完成。
运行配置文件
Java代码运行:
public class Generator {
public static void main(String[] args) throws Exception {
//MBG执行过程中的警告信息
List<String> warnings = new ArrayList<String>();
//生成代码重复时,是否覆盖源代码
boolean override = false;
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(in);
DefaultShellCallback callback = new DefaultShellCallback(override);
//创建MBG
MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
mbg.generate(null);
//输出警告信息
for (String warn : warnings) {
System.out.println(warn);
}
}
}
通过Maven插件运行:
如果使用Maven插件,那么不需要引入mybatis-generator-core
依赖,只需要引入一个Maven的插件mybatis-generator-maven-plugin
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 输出详细信息 -->
<verbose>true</verbose>
<!-- 覆盖生成文件 -->
<overwrite>true</overwrite>
<!-- 定义配置文件 -->
<configurationFile>${basedir}/src/main/resources/generator-configuration.xml</configurationFile>
</configuration>
</plugin>
</plugins>
通过mvn mybatis-generator:generate
运行,或者IDE一键运行。
参考自:Mybatis代码生成器Mybatis-Generator使用详解感谢作者!
MyBatis Generator 超详细配置感谢作者!