1. 程式人生 > >ibatis自動生成DA0 XML VO

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-SI
implementationPackage 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檔案,替換即可。