MBG(MyBatis Generator)
http://www mybatis.org/generator
5.1 XML配置详解
需要添加的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
- classPathEntry
-
5.1.1 property标签
property标签中包含了三个和分隔符相关的属性
autoDelimitKeywords
- beginningDelimiter
- endingDelimiter
MBG中维护了一个关键字列表,当数据库的字段或表与这些关键字一样时,MGB就会自动给这些字段或表添加分隔符
property还有其他属性:
- javaFileEncoding
- javaFormatter
-
5.1.2 plugin标签
5.1.3 commentGenerator标签
用来配置如何生成注释信息
默认实现类中提供了三个可选属性: suppressAllComments
- suppressDate
- addRemarkComments
5.1.4 jdbcConnection标签
5.1.5 javaTypeResolver标签
5.1.6 javaModelGenerator标签
用来控制生成的实体类,根据context标签中配置的defaultModelType属性值的不同,一个表可能会对应生成多个不同的实体类
必选属性:
- targetPackage
-
5.1.7 sqlMapGenerator标签
5.1.8 javaClientGenerator
5.1.9 table标签
5.2 一个配置参考实例
<?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="MySqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="test.model" targetProject="src\main\java">
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="test.xml" targetProject="src\main\resources"></sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src\main\java"/>
<table tableName="%">
<generatedKey column="id" sqlStatement="MySql"/>
</table>
</context>
</generatorConfiguration>
5.3 运行MyBatis Generator
使用java编码运行
- 从命令提示符运行
- 使用Maven Plugin运行
-
5.3.1 使用Java编码代码运行
导入依赖:
<!-- MyBatis 生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</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>
<context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false"
userId="root"
password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="test.model" targetProject="D:\IdeaProjects\mybatis-study\ch02\simple-all\src\main\java">
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="test.xml" targetProject="D:\IdeaProjects\mybatis-study\ch02\simple-all\src\main\resources"></sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="D:\IdeaProjects\mybatis-study\ch02\simple-all\src\main\java"/>
<table tableName="%">
<generatedKey column="id" sqlStatement="MySql"/>
</table>
</context>
</generatorConfiguration>
生成器java启动类:
/**
* 读取MBG配置生成代码
*
* Created by ql on 2022/6/13
*/
public class Generator {
public static void main(String[] args) throws XMLParserException, IOException, InvalidConfigurationException, SQLException, InterruptedException {
// MBG执行过程中的警告信息
List<String> warnings = new ArrayList<>();
// 当生成的代码重复时,覆盖原代码
boolean overwrite = true;
// 读取MBG配置文件
InputStream is = Generator.class.getResourceAsStream("/generator/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);
}
}
}
5.4 Example介绍
将context中将targetRuntime配置为MyBatis3时,MBG会生成和Example相关的对象和方法