mybatis学习(3) - MyBatis Generate配置详解

上一篇《mybatis学习(2) - MyBatis Generate的使用》介绍了MBG的入门及简单使用,本篇中再详细的学习一下生成配置文件,官方配置文件标签说明地址:http://mybatis.org/generator/configreference/xmlconfig.html,我们直接使用多层注释来理解他的配置文件,个人感觉这种效果最好。

<?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>
  <!-- 使用的数据库驱动地址(可以为zip、jar等),数量:0~N -->
  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

  <!-- 一组对象环境,一般对应一个数据库,如果多个数据库组,可以使用不同的id来区分 数量:1~N -->
  <context id="DB2Tables" targetRuntime="MyBatis3">
    <!-- 数据库连接信息,需要注意JDBC的驱动是否在classpath下,如果不在,可使用classPathEntry引入 -->
    <!-- userId & password为密码 & 账号 -->
    <jdbcConnection 
        driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
        connectionURL="jdbc:db2:TEST"
        userId="db2admin"
        password="db2admin">
    </jdbcConnection>

    <!-- java类型转换配置,数量:0~1 -->
    <javaTypeResolver >
        <!--
            数字转换规则:
            如果精度>0或者长度>18,就会使用java.math.BigDecimal
            如果精度=0并且10<=长度<=18,就会使用java.lang.Long
            如果精度=0并且5<=长度<=9,就会使用java.lang.Integer
            如果精度=0并且长度<5,就会使用java.lang.Short
        -->
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <!-- java模型生成器,targetPackage,表示此模型类所属包,targetProject,源代码生成路径。数量:1 -->
    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">
      <!-- 生成的类是否只包含getter,不包含setter,只对MyBatis3有效,默认为false -->
      <property name="constructorBased" value="true" />
      <!-- 是否使用子包,意思允许,那么生成的类放在以schema为子包名的文件夹中,默认为false -->
      <property name="enableSubPackages" value="true" />
      <!-- 实体类属性是否可变,如果设置了,会忽略constructorBased,并不生成setter函数,并直接影响构造函数,默认false -->
      <property name="immutable" value="true" />
      <!-- 所有类的基类,需要使用全名称 -->
      <property name="rootClass" value="example.com.baseModel" />
      <!-- 是否对数据库结果进行trim操作 -->
      <property name="trimStrings" value="true" />
      <!-- 对实例对象使用不同的包名,不设置与实力一样 -->
      <property name="exampleTargetPackage" value="" />
      <!-- 对实例对象使用不同的目标项目,与上面描述类似 -->
      <property name="exampleTargetProject" value="" />
    </javaModelGenerator>

    <!-- 映射文件生成配置,假设没有指定,则不会生成xml文件。targetPackage,表示此模型类所属包,targetProject,源代码生成路径。数量:0~1 -->
    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src" >
      <!-- 与上方类似 -->
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <!-- 字面意思也能理解,java客户端创建,意思就是调取接口的生成配置了,数量:0~1 -->
    <!-- 
        type 的类型
        ANNOTATEDMAPPER: 基于注解的Mapper接口,无对应xml映射文件
        MIXEDMAPPER: 混合形式
        XMLMAPPER: 所有方法都在xml中
    -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">
      <!-- 与上方类似 -->
      <property name="enableSubPackages" value="true" />
      <!-- 所有接口继承的父接口,可以通过table配置的属性覆盖 -->
      <property name="rootInterface" value="" />
    </javaClientGenerator>

    <!-- 配置需要获取的表,只有配置才能生成对应文件,数量:1~N -->
    <!-- 
        tableName 指定生成的表名,可以通过通配符获取多个
        schema 数据库的schema,生成的sql语句表为 schema.tableName
        catalog 数据库的catelog,生成的sql表名会变成 schema.tableName
        alias 别名
        domainObjectName 生成实体对象的基本名称
        enable? 表示是否允许某个设置
        selectByPrimaryKeyQueryId
        selectByExampleQueryId
        modelType 针对表配置,会覆盖context中的defaultModelType
        escapeWildcards 
        delimitIdentifiers 是否给标识符添加分隔符,默认flase
        delimitAllColumns 是否对所有列添加分隔符,默认false
     -->
    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
      <!-- 与上相似 -->
      <property name="constructorBased" value="false" />
      <!-- 动态sql支持类名 -->
      <property name="dynamicSqlSupportClassName" value="" />
      <!-- 动态表名生成的类使用的名称 -->
      <property name="dynamicSqlTableObjectName" value="" />
      <!-- 是否将模式或目录在运行时添加到生成的SQL表名中,默认false -->
      <property name="ignoreQualifiersAtRuntime" value="true" />
      <!-- 同上 -->
      <property name="immutable" value="true" />
      <!-- 是否只为表生成模型类 -->
      <property name="modelOnly" value="true" />
      <!-- 同上 -->
      <property name="rootClass" value="" />
      <!-- 同上 -->
      <property name="rootInterface" value="" />
      <!-- 运行时目录,覆盖之前设置的catalog -->
      <property name="runtimeCatalog" value="" />
      <!-- 同上,覆盖之前的schema -->
      <property name="runtimeSchema" value="" />
      <!-- 使用它,就覆盖了之前的tableName -->
      <property name="runtimeTableName" value="" />
      <!-- 此属性可用于指定将添加到selectAll方法中的order by子句,仅包含列列表字段 -->
      <property name="selectAllOrderByClause" value="" />
      <!-- 默认值从javaModelGenerator继承,否则为false -->
      <property name="trimStrings" value="true" />
      <!-- true表示实体对象的属性为元数据获取的列名,反之尝试将名称转换为驼峰形式,默认为false -->
      <property name="useActualColumnNames" value="false" />
      <!-- 是否使用列索引 -->
      <property name="useColumnIndexes" value="true"/>
      <!-- 生成属性是否会将列名和备注链接起来 -->
      <property name="useCompoundPropertyNames" value="" />
      <!-- 配置自动生成主键的属性 数量:0~1 -->
      <!--
        column: 列名
        sqlStatement:将返回新值的SQL语句,如果这个是identity列,可以使用预设值:
        Cloudscape、DB2、DB2_MF、Derby、HSQLDB、MySql、SqlServer、SYBASE、JDBC
      -->
      <generatedKey column="ID" sqlStatement="DB2" identity="true" />
      <!-- 生成列之前,对列名称进行重命名,通过搜索searchString,然后替换为replaceString来重新命名 -->
      <columnRenamingRule searchString="" replaceString="" />
      <!-- 优先于columnRenamingRule规则 数量:0~N -->
      <!--
        column:要重写的列名
        property:要使用的java属性名称
        javaType:使用的java类型
        jdbcType:该列的jdbc类型,如果需要可以覆盖此类型
        typeHandler:用户需要的用来处理这列的类型处理器
        delimitedColumnName: 指定是否在生成的SQL列名称上增加分隔符
      -->
      <columnOverride column="DATE_FIELD" property="startDate" />
      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
      <!-- 可忽略的值,数量:0~N -->
      <!--
        column:忽略的列名
        delimitedColumnName:匹配列名是否区分大小写
      -->
      <ignoreColumn column="FRED" />
    </table>
  </context>
</generatorConfiguration>

以上配置文件基本上囊括了所有生成配置,但实际生产中我们应该只会用到常见的一些配置属性,其它的一般使用默认的配置即可。

下一篇,我们来学习下如何将mybatis及mbg整合进spring项目中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值