Mybatis Generator 使用(Maven外掛)
阿新 • • 發佈:2019-02-02
最近搭一個專案後臺框架,專案採用SSM框架,專案比較緊急,所以選用Mybatis Generator來自動生成XML、Dao和Model來減少重複的工作。
Mybatis Generator有以下兩種使用方法:
為了保證專案方便管理,所以採用了Maven外掛的方式使用Mybatis Generator來自動生成程式碼。
匯入Mybatis Generator外掛
在pom.xml增加以下外掛:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>
generate
</goal>
</goals>
</execution>
</executions>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration >
</plugin>
配置Mybatis Generator外掛
生成的xml存放在src\main\resources路徑下 :
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!-- java連線資料庫jar所在路徑 -->
<classPathEntry
location="E:\OpenCode\weixin\src\main\resources\mysql-connector-java-5.1.30.jar" />
<context id="context1" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 資料庫連線資訊 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://120.25.89.67:3306/db_iyiqiba"
userId="ZSQ1" password="123" />
<!-- mybatis裡專門用來處理NUMERIC和DECIMAL型別的策略 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="true" />
</javaTypeResolver>
<!-- 生成model類的包 和路徑 -->
<javaModelGenerator targetPackage="com.iyiqiba.dao.model"
targetProject="src\main\java" />
<!-- 生成Mapper.xml 所在路徑下面配置路徑為src\main\resources\ibatis-generator -->
<sqlMapGenerator targetPackage="ibatis-generator"
targetProject="src\main\resources" />
<!-- 生成Dao介面所在包和檔案路徑 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.iyiqiba.dao"
targetProject="src\main\java">
</javaClientGenerator>
<!-- tableName:表名 domainObjectName:對應資料庫表的model類名稱-->
<table tableName="tb_student_base_info" domainObjectName="StudentBaseInfo">
<!-- 如果設定為true,生成的model類會直接使用column本身的名字,而不會再使用駝峰命名方法,比如BORN_DATE,生成的屬性名字就是BORN_DATE,而不會是bornDate -->
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_student_detaill_info" domainObjectName="StudentDetaillInfo" >
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_business_base_info" domainObjectName="BusinessBaseInfo" >
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_business_detaill_info" domainObjectName="BusinessDetaillInfo" >
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_third_user_info" domainObjectName="ThirdUserInfo">
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_activity_comment" domainObjectName="ActivityComment">
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_activity_info" domainObjectName="ActivityInfo">
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_activity_join" domainObjectName="ActivityJoin">
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_activity_mark" domainObjectName="ActivityMark" >
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_address_info" domainObjectName="AddressInfo">
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_activity_placard" domainObjectName="ActivityPlacard" >
<property name="useActualColumnNames" value="false"/>
</table>
<table tableName="tb_kind_info" domainObjectName="KindInfo" >
<property name="useActualColumnNames" value="false"/>
</table>
</context>
</generatorConfiguration>
這裡並沒有遮蔽Example,很多人不想生成Example可能感覺比較雜亂。
可以通過在<table/>
中配置enableUpdateByExample
等資訊來去掉Example。
<table tableName="tb_business_base_info" domainObjectName="BusinessBaseInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<property name="useActualColumnNames" value="false"/>
</table>
mybatis generator目標就是減少Dao層的工作量,針對這一點建議保留Example,如果不保留可能還需要寫更多的動態SQL才能完成工作,這樣程式碼自動生成工具的價值就體現不出來了。
因為自動生成程式碼的時候會覆蓋檔案,所以建議把手寫的動態SQL和自動生成的分成2個Mapper.xml檔案,這樣資料庫新增欄位或有其他修改的時候重新生成Mapper.xml不會影響我們手寫的動態SQL。
執行maven命令
右鍵專案–RunAS-Maven build-輸入mybatis-generator:generate指令 點選Run 即可成功相關程式碼。