ibatis自動生成DA0 XML VO
1. Ibator介紹
Ibator是iBATIS的程式碼發生器,其原名叫abator,後來更名為Ibator,同時代碼結構也做了相應的一些修改,所以兩者的配置也有所不同。Ibator可以生成一個數據庫中的一個表(或多個表)的DAO層、DO層及符合iBATIS規範的配置,它減少了我們編寫配置檔案、建立DO及DAO的工作量,並且可以建立簡單的CRUD(建立,檢索,更新,刪除),我們可以在此基礎之上進行修改,而不必完全的重新去實現了,這非常大的節省了我們的工作量,特別是操作比較多的表的時候,這個優勢體現的更加明顯。
2. Ibator外掛安裝
Ibator外掛有多種安裝方式,並且Eclipse、MyEclipse都能支援。
本文件介紹的是Eclipse下的本地安裝方式:
然後按以下步驟操作:
在eclipse選單中開啟外掛安裝介面:Help -> InstallNew Software ...
接下來 繼續點 Next 即可,最後重啟Eclipse。
驗證外掛是否安裝成功:
從Eclipse選單欄依次點選:File—>New—>Other: 在搜尋框中輸入 “ib”,如出現下圖表示安裝成功。
3. Ibator配置介紹
在Eclipse中新建一個Java Project,然後右鍵New>Other 選擇ABator for iBatisconfiguration File,FileName預設為ibatorConfig.xml。點選“完成”,Eclipse會在程式根目錄下建立ibatorConfig.xml檔案,開啟編輯它,初始內容如下:
<?xmlversion="1.0" encoding="UTF-8" ?>
<!DOCTYPE ibatorConfiguration PUBLIC"-//Apache SoftwareFoundation//DTDApache iBATISIbator Configuration 1.0//EN""http://ibatis.apache.org/dtd/ibator-config_1_0.dtd" >
<ibatorConfiguration >
<ibatorContext id="context1" >
<jdbcConnection driverClass="???"connectionURL="???" userId="???" password="???"/>
<javaModelGenerator targetPackage="???"targetProject="???" />
<sqlMapGenerator targetPackage="???"targetProject="???" />
<daoGenerator targetPackage="???"targetProject="???" type="GENERIC-CI" />
<table schema="???" tableName="???" >
<columnOverride column="???" property="???" />
</table>
</ibatorContext>
</ibatorConfiguration>
根據自己的需求進行配置:
<?xmlversion="1.0" encoding="UTF-8" ?>
<!DOCTYPE ibatorConfiguration PUBLIC"-//Apache SoftwareFoundation//DTDApache iBATISIbator Configuration 1.0//EN""http://ibatis.apache.org/dtd/ibator-config_1_0.dtd" >
<ibatorConfiguration >
<!-- 注意classPathEntry位置,改屬性不在預設配置檔案中,需要手動新增,用於指定資料庫驅動路徑-->
<classPathEntry location="e:/mysql-connector-java-5.1.30.jar" />
<ibatorContext id="context1" >
<!-- 分別為: 驅動名稱,資料庫URL,使用者名稱,密碼-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/test"userId="root" password="123" />
<!-- javaBean生成器 targetPackage:包名,targetProject:專案名-->
<javaModelGenerator targetPackage="com.domain"targetProject="iBatisDemo" />
<!-- 對映檔案生成器 -->
<sqlMapGenerator targetPackage="com.config"targetProject="iBatisDemo" />
<!-- dao生成器,type 指定生成dao類的模板,可選擇IBATIS、SPRING、GENERIC-CI、GENERIC-SIimplementationPackage dao實現類的包名 -->
<daoGenerator targetPackage="com.dao" targetProject="iBatisDemo" implementationPackage="com.dao.impl" type="SPRING" />
<!-- 表名屬性對映 tableName為表名,可使用SQL萬用字元%和_, domainObjectName為對應類名,如不寫則預設和表名相同 -->
<table schema="" tableName="usertbl" domainObjectName="UsertblDomain">
<!-- columnOverride 指定屬性名稱,不指定則以預設規則處理:字母先全變小寫,然後去掉下劃線,下劃線後首字母大寫 -->
<columnOverride column="id" property="uid" />
</table>
<table schema="" tableName="%" domainObjectName="" >
<!-- 是否使用列名做屬性名,預設值為false, 處理規則:字母先全變小寫,然後去掉下劃線,下劃線後首字母大寫-->
<property name="useActualColumnNames" value="true"/>
<!-- 指定生成主鍵的語句 -->
<generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()+1"/>
<!-- 指定生成列名的 替換規則 -->
<columnRenamingRule searchString="flag" replaceString="FLAG" />
<!-- 指定生成的列名 -->
<columnOverride column="id" property="uid" />
<!-- 忽略掉無需生成的列 -->
<ignoreColumn column="sendFlag"/>
</table>
</ibatorContext>
</ibatorConfiguration>
4. Ibator程式碼生成及優化
配置完成後,在配置檔案上右擊,如圖:選擇GenerateiBATIS Artifacts
執行完成後就會發現,專案src下已經生成好了我們指定的目錄及檔案:
開啟檔案後你發現,Ibator在生成的時候,會為每個方法、每個配置都生成註釋,有時顯得很囉嗦且無用,看著影響心情。有沒有辦法不讓它生成註釋呢?有,但是我們只能修改原始碼Ibator的原始碼啦,在外掛安裝完成後,安裝目錄下的原始檔:eclipse\plugins\org.apache.ibatis.ibator.core_1.2.1\ibator-src.zip,解壓後拷貝到Eclipse下
優化一:清除註釋
找到檔案:org.apache.ibatis.abator.internal.DefaultCommentGenerator.java,把不需要生成註釋的方法的內容都清空吧,這些都是void方法,不會有其他的應用。
優化二:清除DAO中多餘方法
另外在生成的DAO及DAO實現中有不少的Example方法,在配置檔案中也有,這些如果你也用不到的話也可以為了處理掉,把下面兩個類找到:
org.apache.ibatis.ibator.generator.ibatis2.dao.DAOGenerator中的getCompilationUnits方法
org.apache.ibatis.ibator.generator.ibatis2.sqlmap.SqlMapGenerator中的getSqlMapElement方法
把其中的帶Example的方法其呼叫的地方全部註釋掉即可
優化三:去除ID字首ibatorgenerated_
還有在生成的配置檔案中的id還有字首“ibatorgenerated_”,看著也覺得太長,此時找到檔案:
org.apache.ibatis.ibator.config.MergeConstants,將NEW_XML_ELEMENT_PREFIX的值設為空"" 再生成就可以了。
也可以直接下載優化好的jar檔案,替換即可。