MBG(MyBatis Generator)
http://www mybatis.org/generator
5.1 XML配置详解
需要添加的XML文件头:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//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 generatorConfigurationPUBLIC "-//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 generatorConfigurationPUBLIC "-//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);// 创建MBGMyBatisGenerator 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相关的对象和方法
