目的:批量解決數(shù)據(jù)庫表與實(shí)體類,Mapper的一一對應(yīng);即當(dāng)數(shù)據(jù)庫表過多時掰曾,需要對每張表進(jìn)行增刪改查等系列操作時,一些實(shí)體類停团,dao層旷坦,mapper等基礎(chǔ)代碼需要花費(fèi)大量的時間編寫,使用generatorConfig.xml配置文件可自動生成基礎(chǔ)代碼佑稠,節(jié)省編程時間
步驟1.導(dǎo)入相關(guān)的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:數(shù)據(jù)庫信息配置文件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>
? ? ? ? <!--加載配置文件秒梅,為下面讀取數(shù)據(jù)庫信息準(zhǔn)備-->
? ? ? ? <properties resource="generator/config.properties"/>
????????<!--
????????context:生成一組對象的環(huán)境? ? ??
????????id:必選,上下文id舌胶,用于在生成錯誤時提示? ? ??
????????defaultModelType:指定生成對象的樣式? ? ? ? ??
????????????????1捆蜀,conditional:類似hierarchical;? ? ? ? ??
????????????????2幔嫂,flat:所有內(nèi)容(主鍵辆它,blob)等全部生成在一個對象中;? ? ? ? ??
????????????????3履恩,hierarchical:主鍵生成一個XXKey對象(key class)锰茉,Blob等單獨(dú)生成一個對象,其他簡單屬性在一個對象中(record class)
? ? ? ? targetRuntime:
? ? ? ? ? ? ? ?1切心,MyBatis3:默認(rèn)的值飒筑,生成基于MyBatis3.x以上版本的內(nèi)容,包括XXXBySample昙衅;? ? ? ? ??
? ? ? ? ? ? ? ?2扬霜,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample而涉;? ? ??
? ? ? ? introspectedColumnImpl:類全限定名著瓶,用于擴(kuò)展MBG
????????-->
? ? ? ? <context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
????????<!-- 注釋 -->
? ? ? ? <!-- 是否取消注釋 true:是 false:否 -->
????????<commentGenerator >
? ? ? ????????<property name="suppressAllComments" value="true"/>
????????</commentGenerator>
? ? ? <!--數(shù)據(jù)庫鏈接地址賬號密碼-->
? ? ? <jdbcConnection driverClass="com.mysql.jdbc.Driver"
? ? ? ? ? ? ? ? ? ? connectionURL="${spring.datasource.url}"??
? ? ? ? ? ? ? ? ? ? userId="XXX"
? ? ? ? ? ? ? ? ? ? password="XXX">
? ? ? </jdbcConnection>
? ? ????<!-- 類型轉(zhuǎn)換 -->
????????<!-- 默認(rèn)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">
? ? ? ? ????????<!-- 從數(shù)據(jù)庫返回的值被清理前后的空格? -->
? ? ? ? ????????<property name="trimStrings" value="true"/>
? ?????</javaModelGenerator>
?
? ? ? ? <!-- 生成mapxml文件 -->
? ? ? ? <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources/" >
? ? ? ? <!--?是否允許子包材原,即targetPackage.schemaName.tableName?-->
? ? ? ? ? ? <!--?在targetPackage的基礎(chǔ)上,根據(jù)數(shù)據(jù)庫的schema再生成一層package季眷,最終生成的類放在這個package下余蟹,默認(rèn)為false?-->
? ? ? ????????<property name="enableSubPackages" value="true" />
????????</sqlMapGenerator>
? ? <!-- 生成mapxml對應(yīng)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子刮,雖然說他封裝的東西比較多威酒,但是大部分時候并不會用到,設(shè)置為false即可-->
? ? <table tableName="t_trans_price" schema="XXX"? enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
????????<!--? ? ? ? Mybatis逆向工程生成Entity,Mapper等文件窑睁,在有自增ID的時候,在generatorConfig.xml中對表的配置葵孤,都要加上一行g(shù)eneratedKey-->
? ? ????<!--? ? ? ? 這樣做的意義是担钮,調(diào)用mapper插入一條數(shù)據(jù)到數(shù)據(jù)庫之后,能從當(dāng)前這個Entity中獲取到插入之后的Id-->
? ? ? ?<generatedKey column="id" sqlStatement="Mysql" identity="true" />
? </table>
?</context>
</generatorConfiguration>
步驟4:點(diǎn)擊generatorConfig.xml對應(yīng)maven的mybatis-generator:generate自動生成相關(guān)文件
查看效果: