目的:批量解决数据库表与实体类,Mapper的一一对应;即当数据库表过多时,需要对每张表进行增删改查等系列操作时,一些实体类,dao层,mapper等基础代码需要花费大量的时间编写,使用generatorConfig.xml配置文件可自动生成基础代码,节省编程时间
步骤1.导入相关的jar
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true </overwrite>
</configuration>
</plugin>
</plugins>
</build>
步骤2:数据库信息配置文件config.properties(与generatorConfig.xml同目录)
spring.datasource.url=XXX
spring.datasource.username=XXX
spring.datasource.password=XXX
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
步骤3:配置generatorConfig.xml文件
<?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>
<!--加载配置文件,为下面读取数据库信息准备-->
<properties resource="generator/config.properties"/>
<!--
context:生成一组对象的环境
id:必选,上下文id,用于在生成错误时提示
defaultModelType:指定生成对象的样式
1,conditional:类似hierarchical;
2,flat:所有内容(主键,blob)等全部生成在一个对象中;
3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class)
targetRuntime:
1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;
2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;
introspectedColumnImpl:类全限定名,用于扩展MBG
-->
<context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 注释 -->
<!-- 是否取消注释 true:是 false:否 -->
<commentGenerator >
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="${spring.datasource.url}"
userId="XXX"
password="XXX">
</jdbcConnection>
<!-- 类型转换 -->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为Integer-->
<!-- true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.X.X.dao.entity" targetProject="src/main/java">
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成mapxml文件 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources/" >
<!-- 是否允许子包,即targetPackage.schemaName.tableName -->
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成mapxml对应client,也就是接口dao -->
<javaClientGenerator targetPackage="com.X.X.dao.mapper" targetProject="src/main/java" type="XMLMAPPER" >
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- database基本等同于schema-->
<!-- mybatis generator自动生成的代码里老是有一堆example,虽然说他封装的东西比较多,但是大部分时候并不会用到,设置为false即可-->
<table tableName="t_trans_price" schema="XXX" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<!-- Mybatis逆向工程生成Entity,Mapper等文件,在有自增ID的时候,在generatorConfig.xml中对表的配置,都要加上一行generatedKey-->
<!-- 这样做的意义是,调用mapper插入一条数据到数据库之后,能从当前这个Entity中获取到插入之后的Id-->
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
步骤4:点击generatorConfig.xml对应maven的mybatis-generator:generate自动生成相关文件
查看效果: