MyBatis Generator速查手册

前言

从Eclipse到idea都一直都在用Mybatis Generator, 也完整翻阅过官方文档, 可是看完就没有那回事了. 这次决定要记录下来, 以备不时之需. 以下根据mybatis-generator-maven-plugin 1.3.5为基础而写的随笔.

快速指南

根据实际情况, 项目里都是用MBG的Maven插件, 这里着重以Maven的形式讲解, 并且禁用了MyBatis的Example.

XML配置文件

以下元素就是MBG的最小配置

  1. 元素指定如何连接数据库
  2. 元素指定生成Model的目标package与目标project
  3. 元素指定生成Mapping XML文件的目标package与目标project
  4. (Optionally)元素指定生成Mapper(即DAO)文件的目标package与目标project, 如果不指定这个元素就不会生成Mapper文件
  5. 至少一个元素

    下面是一个较为完整的示例, 可以保存下来按需修改

    
    
    
    <generatorConfiguration>
    
        
        
        <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip"/>
    
        
        <context id="DB2Tables" targetRuntime="MyBatis3">
    
            <commentGenerator>
                
                <property name="suppressAllComments" value="true"/>
            commentGenerator>
    
            
            <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="constructorBased" value="true"/>
    
                
                <property name="immutable" value="true"/>
    
                
                <property name="rootClass" value="com.github.prontera.domain.base.BasicEntity"/>
    
                
                <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"/>
    
                
                <property name="rootInterface" value="com.github.prontera.Mapper"/>
            javaClientGenerator>
    
            
            
            
            <table alias="ha" tableName="ALLTYPES" domainObjectName="Customer"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
    
                
                <property name="useActualColumnNames" value="true"/>
    
                
                
                
                
                <columnOverride column="DATE_FIELD" property="startDate"/>
    
                
                <property name="rootClass" value="com.github.prontera.domain.base.HelloBasicClass"/>
    
                
                <property name="rootInterface" value="com.github.prontera.Mapper"/>
    
                
                <property name="trimStrings" value="true"/>
    
                
                
                <columnRenamingRule searchString="^CUST_" replaceString=""/>
    
                
                <ignoreColumn column="CREATE_TIME"/>
    
                
                <ignoreColumnsByRegex pattern=".*_TIME$">
                    <except column="UPDATE_TIME"/>
                ignoreColumnsByRegex>
            table>
    
        context>
    generatorConfiguration>
    

    命令行运行

    十分简单, 从Maven仓库里下载一个MBG的jar包即可运行

    java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml

    Maven插件运行

    使用Maven带来的便利

    在石器时代我们都会在generatorConfig.xml中的targetProject属性写上一大串绝对路径, 结合Maven之后所有pom中的元素都直接可以在generatorConfig.xml中引用, 请看以下例子

    <project ...>
      ...
      <properties>
        <dao.target.dir>src/main/javadao.target.dir>
      properties>
      ...
      <build>
        ...
        <plugins>
          ...
          <plugin>
            <groupId>org.mybatis.generatorgroupId>
            <artifactId>mybatis-generator-maven-pluginartifactId>
            <version>1.3.5version>
            <dependencies>
              <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>5.1.40version>
              dependency>
            dependencies>
          plugin>
          ...
        plugins>
        ...
      build>
      ...
    project>

    generatorConfig.xml中就可以直接引用${dao.target.dir}, 让配置更加通用

    <sqlMapGenerator targetPackage="com.github.prontera.domain"
                     targetProject="${dao.target.dir}">
      <property name="enableSubPackages" value="true"/>
    sqlMapGenerator>

    NOTE: 实战经验告诉我, 不要用MySQL 6.0以上的客户端, 因为会丢失update与delete等操作

    运行

    在idea中的Maven面板找到Plugins中的mybatis-generator中运行即可

    参考

    MyBatis Generator

    你可能感兴趣的:(Java)