亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

ibatis遷移到mybatis3的注意事項

2024-07-13 10:13:05
字體:
來源:轉載
供稿:網友

DocUpgrade3 

這一頁提供了一些當你從ibatis遷移到mybatis3時非常有用的信息。不能保證100%的完整。

這個項目現在的地址是 Github https://github.com/mybatis/ibatis2mybatis

轉換工具

在下載區有一個可用的工具,可以幫你將iBATIS 2.x sqlmap文件轉換為MyBatis 3.x xml mapper文件。

從這里獲取 http://mybatis.googlecode.com/files/ibatis2mybatis.zip

該工具是一個封裝在Ant任務圍繞XSTL轉換和一些文字替換,并試圖在復雜的工作開始之前提供一個良好的起點。

新的DTDs

新的sqlMapConfig.xml DTD:

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

新的sqlMap (*.map.xml) DTD:

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 

Configuration配置

?配置根節點從 <sqlMapConfig> 變成 <configuration>

Settings配置

在配置的根節點:

<settings x="y" foo="bar"/>

現在是:

<settings>  <setting name="x" value="y"/>  <setting name="foo" value="bar"/></settings>

然后

<settings useStatementNamespaces="true"/>

這個配置可以刪除掉,因為使用命名空間已經是一個強制的特性。

<typeAlias>別名<typeAlias> 必須從 <sqlMap> 元素移動到 <configuration><typeAliases>這里</typeAliases></configuration><configuration>  <settings>  ...  </settings>  <typeAliases>    <typeAlias ... />  </typeAliases></configuration><transactionManager> 和<dataSource><transactionManager type="JDBC" commitRequired="false">  <dataSource type="your.package.CustomDataSourceFactory" /></transactionManager>

變成:

<environments default="env">  <environment id="env">    <transactionManager type="JDBC">      <property name="commitRequired" value="false"/>    </transactionManager>    <dataSource type="your.package.CustomDataSourceFactory" />  </environment></environments><sqlMap><sqlMap resource=... /><sqlMap resource=... /><sqlMap resource=... />

變成:

<mappers>  <mapper resource=... /></mappers>

Mapping

?根元素從 <sqlMap> 變成 <mapper>

?parameterClass屬性必須改成parameterType

?resultClass屬性必須改成resultType

?class屬性必須改成type

?columnIndex不在<result> 標簽中使用

?groupBy屬性已經被廢棄。下面是一個 2.x sqlMap的groupBy 例子:

<resultMap id="productRM" class="product" groupBy="id">  <result property="id" column="product_id"/>  <result property="name" column="product_name"/>  <result property="category" column="product_category"/>  <result property="subProducts" resultMap="Products.subProductsRM"/></resultMap>

新的:

<resultMap id="productRM" type="product" >  <id property="id" column="product "/>  <result property="name " column="product_name "/>  <result property="category " column="product_category "/>  <collection property="subProducts" resultMap="Products.subProductsRM"/></resultMap>

Nested resultMaps嵌套的resultMaps

現在需要使用<association> 標簽指定.

<resultMap ...>  <result property="client" resultMap="Client.clientRM"/>  ...</resultMap>

需要改成:

<resultMap ...>  <association property="client" resultMap="Client.clientRM"/>  ...</resultMap>

<parameterMap>

雖然這個標簽被廢棄了,但是他仍然可以在iBatis 2中使用。但是對3.0.3以上版本當使用type="map"時有一個bug,并不指定 javaType 參數。這將導致:

There is no getter for property named '...' in 'interface java.util.Map'    

這將會在MyBatis 3.0.4中解決,對3.0.3版本或更早的版本解決的方法是顯示的指定javaType

Inline parameters內聯參數#value#

需要改成:

#{value}jdbcType changes jdbcType變化jdbcType="ORACLECURSOR"

需要改成:

jdbcType="CURSOR"

還有

jdbcType="NUMBER"

需要改成:

jdbcType="NUMERIC"Stored procedures存儲過程?<procedure> 存儲過程的標簽已經不存在了,需要使用 <select>, <insert> 或 <update>標簽。<procedure id="getValues" parameterMap="getValuesPM">  { ? = call pkgExample.getValues(p_id => ?) }</procedure>

需要改成:

<select id="getValues" parameterMap="getValuesPM" statementType="CALLABLE">  { ? = call pkgExample.getValues(p_id => ?)}</select>

如果你調用一個insert的帶返回值的存儲過程,你可以使用<select>標簽代替<insert>,但是你需要設置specifyuseCache="false" 和flushCache="true",你還必須做一個強制提交(事務)。

?對返回數據集的存儲過程,當使用嵌套的resultMap時,這兒有一個bug  (例如:出參resultMap包含一個<association> 標簽). 只要問題沒有解決,你必須自己將resultMap定義好,或者嵌套的內容不會被填充。

Caching緩存

<cacheModel id="myCache" type="LRU">  <flushInterval hours="24"/>  <property name="size" value="100" /></cacheModel>

需要改為:

<cache flushInterval="86400000" eviction="LRU"/>

注意:你可以忽略eviction="LRU",因為他是默認值。.

?<flushOnExecute> 標簽被flushCache屬性所替代。緩存默認會被所有的查詢語句使用。

Dynamic SQL動態SQL

在我的項目中最常用的的動態SQL是isNotNull. 下面是替換正則表達式的示例:

正則表達式:

<isNotNull.*?property=/"(.*?)/"></isNotNull>

需要改為:

<if test="$1 != null"></if>

isEqual最常用,你可以使用類似的<if> 標簽替代.

SqlMapClient

?這個類已經不存在了,使用SqlSessionFactory替代 (詳細內容看Mybatis文檔).

Custom type handler

?用 TypeHandler 替換接口 TypeHandlerCallback。它具有稍有不同,但方法類似。

Custom data source factory

舊的接口:

com.ibatis.sqlmap.engine.datasource.DataSourceFactory

新的接口:

org.apache.ibatis.datasource.DataSourceFactory

替換下面的方法

public void initialize(Map properties)

為:

public void setProperties(Properties props)

總結

以上所述是小編給大家介紹的ibatis遷移到mybatis3的注意事項,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!

 

注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91青草视频久久| 57pao国产精品一区| 日韩av成人在线观看| 色悠悠久久88| 日韩一区二区福利| 91国产美女视频| 91香蕉嫩草影院入口| 狠狠色香婷婷久久亚洲精品| 亚洲综合日韩在线| 欧美日韩一区二区免费视频| 伊人久久五月天| 欧美精品videos性欧美| 成人美女免费网站视频| 成人性生交大片免费看视频直播| 日韩精品视频在线| 九九热精品视频国产| 亚洲аv电影天堂网| 国产精品欧美一区二区三区奶水| 在线日韩精品视频| 91国语精品自产拍在线观看性色| 在线观看欧美成人| 亚洲成色www8888| 亚洲欧美日韩第一区| 97精品伊人久久久大香线蕉| 欧美在线视频一区二区| 久久久久国产视频| 久久夜色精品国产欧美乱| 久久综合免费视频| 欧美综合国产精品久久丁香| 欧美韩日一区二区| 日韩精品视频免费专区在线播放| 久久久久久伊人| 欧美性极品xxxx做受| 久久99国产精品自在自在app| 国产一区二区三区网站| 91亚洲国产精品| 日本一区二区不卡| 国产精品视频免费在线| 亚洲人成电影网| 欧美激情精品久久久久| 成人欧美在线观看| 国产欧美精品日韩精品| 国产精品福利在线观看网址| 国产视频精品一区二区三区| 日韩69视频在线观看| 精品中文字幕久久久久久| 精品亚洲国产视频| 日本三级韩国三级久久| 日韩成人av一区| 国产精品免费一区豆花| 亚洲精品国偷自产在线99热| 成人写真视频福利网| 欧美精品电影免费在线观看| 川上优av一区二区线观看| 久久精品国产亚洲一区二区| 粗暴蹂躏中文一区二区三区| 亚洲国产欧美一区二区丝袜黑人| 97色在线播放视频| 久久青草精品视频免费观看| 久久久日本电影| 国产成人鲁鲁免费视频a| 国产精品久久久久久久久免费| 亚洲老头老太hd| 国产视频在线观看一区二区| 国产精品欧美日韩| 国产午夜精品免费一区二区三区| 亚洲网站在线看| 国产99视频在线观看| 久久中文字幕国产| 国产精品自拍网| 日韩精品高清在线观看| 亚洲在线www| 亚洲影院高清在线| 91日本在线视频| 一本一道久久a久久精品逆3p| 欧美激情视频免费观看| 国产精品精品久久久久久| 中文精品99久久国产香蕉| 国产精品久久久久av免费| 综合欧美国产视频二区| 欧美日韩亚洲精品内裤| 亚洲伊人第一页| 日韩av黄色在线观看| 奇米影视亚洲狠狠色| 国产精品999999| 综合av色偷偷网| 色婷婷综合久久久久中文字幕1| 国内外成人免费激情在线视频网站| 欧美wwwxxxx| 庆余年2免费日韩剧观看大牛| 国产精品久久9| 欧美电影院免费观看| 国产美女搞久久| 久久最新资源网| 久久偷看各类女兵18女厕嘘嘘| 日韩黄色高清视频| 精品日韩中文字幕| 色婷婷av一区二区三区久久| 日韩av最新在线| 国产成人aa精品一区在线播放| 成人黄色片在线| 国产亚洲欧美一区| 亚洲天堂开心观看| 亚洲资源在线看| 国产在线a不卡| 国产精品久久在线观看| 欧美日韩免费区域视频在线观看| 亚洲小视频在线| 亚洲成人av在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 正在播放亚洲1区| 狠狠综合久久av一区二区小说| 成人免费视频网址| 揄拍成人国产精品视频| 日韩av成人在线观看| 国产精品视频在线播放| 日韩av资源在线播放| 亚洲美女av黄| 亚洲欧美日本精品| 国产精品成人av在线| 国产综合在线观看视频| 国产亚洲精品日韩| 亚洲精品第一国产综合精品| 久久免费少妇高潮久久精品99| 国产精品草莓在线免费观看| 欧美日韩在线观看视频| 日韩美女中文字幕| 日本高清视频精品| 国产国语videosex另类| 尤物九九久久国产精品的分类| 久久久国产影院| 国产69精品久久久久9| 精品女同一区二区三区在线播放| 久久九九全国免费精品观看| 国产福利精品在线| 欧美激情在线狂野欧美精品| 日本精品一区二区三区在线| 亚洲视频专区在线| 欧洲午夜精品久久久| 国产精品一区二区三区在线播放| 91沈先生在线观看| www.亚洲人.com| 中文字幕欧美日韩| 久久久99久久精品女同性| 91精品美女在线| 奇米一区二区三区四区久久| 久久伊人精品一区二区三区| 国产精品综合不卡av| 亚洲精品91美女久久久久久久| 成人久久18免费网站图片| 国产一区二区三区在线看| 日韩精品www| 欧美极品少妇xxxxⅹ免费视频| 精品香蕉一区二区三区| 国产剧情久久久久久| 欧美激情中文网| 2025国产精品视频| 欧美多人爱爱视频网站| 欧美在线视频一区| 青青久久av北条麻妃黑人| 欧美体内谢she精2性欧美| 高清欧美性猛交xxxx黑人猛交| 久久电影一区二区| 日韩欧美综合在线视频|