MyBatis代码自动生成

MyBatis相关文件主要有三部分:Java POJO(实体类)、Sql Map XML、Java Client(Mapper类)。当数据表较少的时候,这些文件都手写完成是没有太大问题的;如果是成百上千张表,也选择手写的话估计想哭的心都有了,而 且出错率高。所以为了提高编写MyBatis代码的效率和质量,MyBatis开发一个自动生成代码的项目:MyBatis-Generator,简称MBG,用来自动生成上述的三类文件。

 

官方帮助文档地址:http://mybatis.github.io/generator/index.html

 

MBG是根据提供的数据库表进行文件的生成,整个MBG的核心实际是一个XML描述文件,文件描述的内容主要包括:

(1)数据从哪来:数据库连接信息,即<jdbcConnection>标签内容;

(2)Java POJO生成到哪里:即生成目录,<javaModelGenerator>标签内容;

(3)Sql Map生成到哪里:即生成目录,<sqlMapGenerator>标签内容;

(4)Java Client生成到哪里,生成什么类型的代码:这是可选标签,<javaClientGenerator>标签内容;

(5)表数据具体如何生成:<table>标签内容。

 

当然,整个XML文件还有很多其它标签,每个具体的用法及含义在官方文档里面有详细介绍,地址是:http://mybatis.github.io/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>
  <classPathEntry location="D:\Program Files\springToolSuite\mvn_repository\mysql\mysql-connector-java\5.1.30\mysql-connector-java-5.1.30.jar" />

  <context id="MysqlTables" targetRuntime="MyBatis3">
    <commentGenerator>
      <property name="suppressAllComments" value="true" />
      <property name="suppressDate" value="true" />
    </commentGenerator>
    
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;generateSimpleParameterMetadata=true"
        userId="root"
        password="root">
    </jdbcConnection>

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

    <javaModelGenerator targetPackage="com.research.mybatis.generator.model" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="generator.mapper"  targetProject="src/main/resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="com.research.mybatis.generator.dao"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="research" tableName="person" domainObjectName="PERSON" >
      <property name="useActualColumnNames" value="true"/>
      <columnOverride column="P_NAME" property="pName" />
     </table>
  </context>
</generatorConfiguration>

 

MBG自动生成的XML描述文件定义好之后就可以开始生成了,具体的生成方式有四种:
1. 命令行生成: 例如java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml -overwrite,这里要注意generatorConfig.xml文件中配置的classPathEntry路径的正确性。
2. Ant生成:官网有例子,直接参考吧,这种方式我没有试。示例
3. Maven生成: 这里是使用Maven插件生成的,生命周期是在编译期之前。示例
4. Java代码生成:项目引入mybatis-generator-core包后,通过加载XML配置文件,直接通过生成。示例

 

个人觉得如果MyBatis相关的代码改动比较频繁,可以使用Maven生成方式,这样使用Maven打包的时候会自动生成新的相关文件;如果是表结构已经确定,改动较小,Java代码生成的方式更为合适。

 

你可能感兴趣的:(MyBatis代码自动生成)