MyBatis Generator XML 配置文件使用参考

这篇文章是对 MyBatis Generator 官网中 XML 配置文件相关内容的大致翻译。


MyBatis Generator(MBG)由XML配置文件驱动。配置文件会告知 MBG:

  • 如何连接数据库
  • 哪些对象需要被生成,以及如何生成它们
  • 哪些数据表需要被利用来生成对象

MBG可生成三种文件:

  • Java Model Objects(.java)--------POJO
  • SQL Map Files(.xml)--------数据库查询映射
  • Java Client Objects(.java)--------DAO

如下是一个MBG配置文件的例子。

<?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>
  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
        connectionURL="jdbc:db2:TEST"
        userId="db2admin"
        password="db2admin">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
      <property name="useActualColumnNames" value="true"/>
      <generatedKey column="ID" sqlStatement="DB2" identity="true" />
      <columnOverride column="DATE_FIELD" property="startDate" />
      <ignoreColumn column="FRED" />
      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
    </table>

  </context>
</generatorConfiguration>

重要说明:

  • 该文件指定使用旧版DB2 CLI驱动连接数据库,并告诉MBG如何找到该驱动。<classPathEntry>是<generatorConfiguration>的可选子元素,指定数据库连接驱动(jar/zip文件)的全路径地址。
  • <jdbcConnection> 指定内省数据表所需的数据库连接属性。
  • <javaTypeResolver> 定义the Java Type Resolver的属性,其中的forceBigDecimals属性指明MBG是否应该强制为数据库中的数字类型在java环境中使用java.math.BigDecimal。默认情况下,即foreceBigDecimals=false,The Java Type Resolver会通过在可行的情况下改变整数类型来简化JDBC decimal 和 numeric类型的使用。如果结果不如意,可将“foreceBigDecimals”设置为true,此时,只要数据库中的字段是数字类型(decimal和numeric)的,The Java Type Resolver就会使用java.math.BigDecimal。详情可见下图。

java type resolver

  • <javaModelGenerator> 定义the Java Model Generator的属性,the Java Model Generator通过与内省表匹配的类来构建主键类、记录类和查询。enableSubPackages属性决定MBG是否为基于内省数据表的catalog和schema生成不同的Java包。例如,假设一个数据表MYTABLE在schema MYSCHMA中,并假设targetPackage属性被设置为”com.mycompany“,如果enableSubPackages = true,生成的实体类会被放置在”com.mycompany.myschema“包路径下,若为false,生成的实体类将被放置于”com.mycompany“包路径下。trimStrings属性决定MBG是否为从数据库中返回的字符字段去除末尾空格,如果数据库以char类型而不是varchar类型存储数据,这个属性很有用,当trimStrings = true时,MBG会消除字符字段末尾的空格。
  • <javaClientGenerator> 定义 the Java Client Generator属性,the Java Client Generator会创建可轻易使用被生成的Java模型和XML映射文件的Java接口和类。该enableSubPackages属性与<javaModelGenerator>类似。
  • <table> 指定哪些数据表被内省。这个文件只指定了一个数据表被内省,但也可以指定多个。useActualColumnNames属性决定生成的实体类的属性名是否使用真实的数据表字段名,若为false,MBG会使用数据表字段名的驼峰形式。
  • <generatedKey> 是<table>的可选子元素,它被用来指定某字段为自动生成的键。通过指定该元素,MBG将在SQL映射文件中的<insert>元素内生成适当的<selectKey>元素,以解决Insert数据时不支持主键自动生成的问题。
  • <columnOverride> 是<table>的可选子元素,它被用来改变内省数据库字段的特定属性,而不是生成默认值。以上面MBG配置文件为例子。数据表中的字段“DATE_FIELD”将与名为“startDate”的属性映射,而不是与同名的或名为“dateField”(当useActualColumnsNames = false时)的属性映射;“LONG_VARCHAR_FIELD”字段将被认为是VARCHAR类型,而不管其真实类型。更多内容如下。

columnOverride

  • <ignoreColumn>指定被忽视的数据表字段。被忽视的字段不会出现在实体类的属性和SQL映射语句中。

以下是未出现在以上配置文件中的标签元素

  • <columnRenamingRule> 指定数据表字段重命名规则。

columnRenamingRule

  • <commentGenerator>指定有关于生成注释的属性。

commentGenerator

  • <context> 指定用户生成各种文件(mapper文件、实体类文件等)的环境,其子元素被用来指定所需生成对象的类型以及需要连接的数据库。在<generatorConfiguration>下可以放置多个<context>,以允许在一次运行中从不同数据库中或以不同参数生成对象。
  • <domainObjectRenamingRule> 指定实体类文件重命名的规则。

domainObjectRenamingRule

  • <sqlMapGenerator> 定义the SQL Map Generator的属性,the SQL Map Generator负责为各个内省数据表创建由MyBatis/iBATIS格式化的SQL映射文件。

sqlMapGenerator

更多信息可参阅 MyBatis Generator 官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值