MBG(MyBatis Generator)
http://www mybatis.org/generator

5.1 XML配置详解

需要添加的XML文件头:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

generatorConfiguration标签的子标签及其顺序:

  • properties
  • classPathEntry
  • context

    5.1.1 property标签

    property标签中包含了三个和分隔符相关的属性

  • autoDelimitKeywords

  • beginningDelimiter
  • endingDelimiter

MBG中维护了一个关键字列表,当数据库的字段或表与这些关键字一样时,MGB就会自动给这些字段或表添加分隔符

property还有其他属性:

  • javaFileEncoding
  • javaFormatter
  • xmlFormatter

    5.1.2 plugin标签

    5.1.3 commentGenerator标签

    用来配置如何生成注释信息
    默认实现类中提供了三个可选属性:

  • suppressAllComments

  • suppressDate
  • addRemarkComments

以上都默认为false

5.1.4 jdbcConnection标签

5.1.5 javaTypeResolver标签

用来指定JDBC和java类型如何转换

5.1.6 javaModelGenerator标签

用来控制生成的实体类,根据context标签中配置的defaultModelType属性值的不同,一个表可能会对应生成多个不同的实体类
必选属性:

  • targetPackage
  • targetProject

    5.1.7 sqlMapGenerator标签

    用于配置SQL映射生成器的属性

    5.1.8 javaClientGenerator

    用于配置java客户端生成器的属性,也就是Mapper接口

    5.1.9 table标签

    最重要,用于配置需要通过内省数据库的表

    5.2 一个配置参考实例

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE generatorConfiguration
    3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    5. <generatorConfiguration>
    6. <context id="MySqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    7. <property name="beginningDelimiter" value="`"/>
    8. <property name="endingDelimiter" value="`"/>
    9. <commentGenerator>
    10. <property name="suppressDate" value="true"/>
    11. <property name="addRemarkComments" value="true"/>
    12. </commentGenerator>
    13. <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="root">
    14. </jdbcConnection>
    15. <javaModelGenerator targetPackage="test.model" targetProject="src\main\java">
    16. <property name="trimStrings" value="true"/>
    17. </javaModelGenerator>
    18. <sqlMapGenerator targetPackage="test.xml" targetProject="src\main\resources"></sqlMapGenerator>
    19. <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src\main\java"/>
    20. <table tableName="%">
    21. <generatedKey column="id" sqlStatement="MySql"/>
    22. </table>
    23. </context>
    24. </generatorConfiguration>

    5.3 运行MyBatis Generator

  • 使用java编码运行

  • 从命令提示符运行
  • 使用Maven Plugin运行
  • 使用Eclipse插件运行

    5.3.1 使用Java编码代码运行

    导入依赖:

    1. <!-- MyBatis 生成器 -->
    2. <dependency>
    3. <groupId>org.mybatis.generator</groupId>
    4. <artifactId>mybatis-generator-core</artifactId>
    5. <version>1.3.3</version>
    6. </dependency>

    生成器配置:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE generatorConfiguration
    3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    5. <generatorConfiguration>
    6. <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
    7. <property name="beginningDelimiter" value="`"/>
    8. <property name="endingDelimiter" value="`"/>
    9. <commentGenerator>
    10. <property name="suppressDate" value="true"/>
    11. <property name="addRemarkComments" value="true"/>
    12. </commentGenerator>
    13. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
    14. connectionURL="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;useSSL=false"
    15. userId="root"
    16. password="root">
    17. </jdbcConnection>
    18. <javaModelGenerator targetPackage="test.model" targetProject="D:\IdeaProjects\mybatis-study\ch02\simple-all\src\main\java">
    19. <property name="trimStrings" value="true"/>
    20. </javaModelGenerator>
    21. <sqlMapGenerator targetPackage="test.xml" targetProject="D:\IdeaProjects\mybatis-study\ch02\simple-all\src\main\resources"></sqlMapGenerator>
    22. <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="D:\IdeaProjects\mybatis-study\ch02\simple-all\src\main\java"/>
    23. <table tableName="%">
    24. <generatedKey column="id" sqlStatement="MySql"/>
    25. </table>
    26. </context>
    27. </generatorConfiguration>

    生成器java启动类:

    1. /**
    2. * 读取MBG配置生成代码
    3. *
    4. * Created by ql on 2022/6/13
    5. */
    6. public class Generator {
    7. public static void main(String[] args) throws XMLParserException, IOException, InvalidConfigurationException, SQLException, InterruptedException {
    8. // MBG执行过程中的警告信息
    9. List<String> warnings = new ArrayList<>();
    10. // 当生成的代码重复时,覆盖原代码
    11. boolean overwrite = true;
    12. // 读取MBG配置文件
    13. InputStream is = Generator.class.getResourceAsStream("/generator/generatorConfig.xml");
    14. ConfigurationParser cp = new ConfigurationParser(warnings);
    15. Configuration config = cp.parseConfiguration(is);
    16. is.close();
    17. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    18. // 创建MBG
    19. MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
    20. // 执行生成代码
    21. myBatisGenerator.generate(null);
    22. // 输出警告信息
    23. for (String warning : warnings) {
    24. System.out.println(warning);
    25. }
    26. }
    27. }

    5.4 Example介绍

    将context中将targetRuntime配置为MyBatis3时,MBG会生成和Example相关的对象和方法