[转]利用mybatis-generator自动生成代码
      
      
    
   
  
  
    1、mybatis-generator 概述
MyBatis官方提供了逆向工程 mybatis-generator,可以针对数据库表自动生成MyBatis执行所需要的代码(如Mapper.java、Mapper.xml、POJO)。mybatis-generator 有三种用法:命令行、eclipse插件、maven插件。而maven插件的方式比较通用,本文也将概述maven插件的使用方式。
pom.xml中配置plugin
(官方文档:Running MyBatis Generator With Maven)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 
 | <build><plugins>
 
 <plugin>
 <groupId>org.mybatis.generator</groupId>
 <artifactId>mybatis-generator-maven-plugin</artifactId>
 <version>1.3.2</version>
 <configuration>
 
 <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
 <verbose>true</verbose>
 <overwrite>true</overwrite>
 </configuration>
 <executions>
 <execution>
 <id>Generate MyBatis Artifacts</id>
 <goals>
 <goal>generate</goal>
 </goals>
 </execution>
 </executions>
 <dependencies>
 <dependency>
 <groupId>org.mybatis.generator</groupId>
 <artifactId>mybatis-generator-core</artifactId>
 <version>1.3.2</version>
 </dependency>
 </dependencies>
 </plugin>
 </plugins>
 </build>
 
 | 
3、generatorConfig.xml配置文件
(官方文档:MyBatis GeneratorXML Configuration File Reference)
稍微详细一点如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 
 | <?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="C:/workspace/project/learning/mybatis/lib/mysql-connector-java-5.1.6.jar"/>
 <context id="default" targetRuntime="MyBatis3">
 
 <commentGenerator>
 <property name="suppressDate" value="true"/>
 <property name="suppressAllComments" value="true"/>
 </commentGenerator>
 
 <jdbcConnection driverClass="com.mysql.jdbc.Driver"
 connectionURL="jdbc:mysql://localhost:3306/test"
 userId="root"
 password="dev">
 </jdbcConnection>
 
 
 
 
 
 <javaModelGenerator targetPackage="dulk.learn.mybatis.generator.pojo"
 targetProject="./src/main/java">
 
 <property name="enableSubPackages" value="false"/>
 
 <property name="constructorBased" value="true"/>
 
 <property name="trimStrings" value="true"/>
 
 <property name="immutable" value="false"/>
 </javaModelGenerator>
 
 
 
 <sqlMapGenerator targetPackage="generator"
 targetProject="./src/main/resources">
 <property name="enableSubPackages" value="false"/>
 </sqlMapGenerator>
 
 
 
 
 
 
 <javaClientGenerator type="XMLMAPPER"
 targetPackage="dulk.learn.mybatis.generator.mapper"
 targetProject="./src/main/java">
 <property name="enableSubPackages" value="false"/>
 </javaClientGenerator>
 
 <table tableName="author" domainObjectName="Author"
 enableCountByExample="false" enableUpdateByExample="false"
 enableDeleteByExample="false" enableSelectByExample="false"
 selectByExampleQueryId="false">
 </table>
 <table tableName="book" domainObjectName="Book"
 enableCountByExample="false" enableUpdateByExample="false"
 enableDeleteByExample="false" enableSelectByExample="false"
 selectByExampleQueryId="false">
 </table>
 </context>
 </generatorConfiguration>
 
 | 
有些默认配置不必显性去配置,所以简化一下快速配置的话也可以这样:
(注意:配置中文件的生成地址等根据个人实际情况进行调整,另外,若有其他配置想要调整请参考官方文档)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 
 | <?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="C:/workspace/project/learning/mybatis/lib/mysql-connector-java-5.1.6.jar"/>
 <context id="default" targetRuntime="MyBatis3">
 <commentGenerator>
 <property name="suppressDate" value="true"/>
 <property name="suppressAllComments" value="true"/>
 </commentGenerator>
 <jdbcConnection driverClass="com.mysql.jdbc.Driver"
 connectionURL="jdbc:mysql://localhost:3306/test"
 userId="root"
 password="dev">
 </jdbcConnection>
 <javaModelGenerator targetPackage="dulk.learn.mybatis.generator.pojo"
 targetProject="./src/main/java">
 <property name="trimStrings" value="true"/>
 </javaModelGenerator>
 <sqlMapGenerator targetPackage="generator"
 targetProject="./src/main/resources">
 </sqlMapGenerator>
 <javaClientGenerator type="XMLMAPPER"
 targetPackage="dulk.learn.mybatis.generator.mapper"
 targetProject="./src/main/java">
 </javaClientGenerator>
 <table tableName="author" domainObjectName="Author"
 enableCountByExample="false" enableUpdateByExample="false"
 enableDeleteByExample="false" enableSelectByExample="false"
 selectByExampleQueryId="false">
 </table>
 <table tableName="book" domainObjectName="Book"
 enableCountByExample="false" enableUpdateByExample="false"
 enableDeleteByExample="false" enableSelectByExample="false"
 selectByExampleQueryId="false">
 </table>
 </context>
 </generatorConfiguration>
 
 | 
另,配置文件中诸如 javaModelGenerator / sqlMapGenerator / javaClientGenerator 等配置的顺序不要轻易改变,可能会导致插件执行时失败。
4、使用方式
mvn mybatis-generator:generate
如果是在IDEA环境中,直接鼠标点击执行即可:

目录结构如下:

注:建表时,字段名称建议用”_”分隔多个单词,比如:author_id…,这样生成的model,属性名称就会变成的驼峰命名,即:authorId
参考链接
利用mybatis-generator自动生成代码
https://www.cnblogs.com/yjmyzz/p/mybatis-generator-tutorial.html