欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ibatis遷移到mybatis3的注意事項(xiàng)

 更新時間:2017年10月17日 10:05:40   作者:動力節(jié)點(diǎn)  
這篇文章主要介紹了ibatis遷移到mybatis3的注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下

DocUpgrade3 

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

這個項(xiàng)目現(xiàn)在的地址是 Github https://github.com/mybatis/ibatis2mybatis

轉(zhuǎn)換工具

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

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

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

新的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配置

配置根節(jié)點(diǎn)從 <sqlMapConfig> 變成 <configuration>

Settings配置

在配置的根節(jié)點(diǎn):

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

現(xiàn)在是:

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

然后

<settings useStatementNamespaces="true"/>

這個配置可以刪除掉,因?yàn)槭褂妹臻g已經(jīng)是一個強(qiáng)制的特性。

<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> 標(biāo)簽中使用

groupBy屬性已經(jīng)被廢棄。下面是一個 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

現(xiàn)在需要使用<association> 標(biāo)簽指定.

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

需要改成:

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

<parameterMap>

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

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

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

Inline parameters內(nèi)聯(lián)參數(shù)
#value#

需要改成:

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

需要改成:

jdbcType="CURSOR"

還有

jdbcType="NUMBER"

需要改成:

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

需要改成:

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

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

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

Caching緩存

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

需要改為:

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

注意:你可以忽略eviction="LRU",因?yàn)樗悄J(rèn)值。.

<flushOnExecute> 標(biāo)簽被flushCache屬性所替代。緩存默認(rèn)會被所有的查詢語句使用。

Dynamic SQL動態(tài)SQL

在我的項(xiàng)目中最常用的的動態(tài)SQL是isNotNull. 下面是替換正則表達(dá)式的示例:

正則表達(dá)式:

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

需要改為:

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

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

SqlMapClient

這個類已經(jīng)不存在了,使用SqlSessionFactory替代 (詳細(xì)內(nèi)容看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)

總結(jié)

以上所述是小編給大家介紹的ibatis遷移到mybatis3的注意事項(xiàng),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Spring Boot整合Spring Security的示例代碼

    Spring Boot整合Spring Security的示例代碼

    這篇文章主要介紹了Spring Boot整合Spring Security的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Springboot中使用緩存的示例代碼

    Springboot中使用緩存的示例代碼

    這篇文章主要介紹了Springboot中使用緩存的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 使用IDEA搭建Hadoop開發(fā)環(huán)境的操作步驟(Window10為例)

    使用IDEA搭建Hadoop開發(fā)環(huán)境的操作步驟(Window10為例)

    經(jīng)過三次重裝,查閱無數(shù)資料后成功完成hadoop在win10上實(shí)現(xiàn)偽分布式集群,以及IDEA開發(fā)環(huán)境的搭建。一步一步跟著本文操作可以避免無數(shù)天坑
    2021-07-07
  • 淺談Java中幾種常見的比較器的實(shí)現(xiàn)方法

    淺談Java中幾種常見的比較器的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄獪\談Java中幾種常見的比較器的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringCloud之Feign示例詳解

    SpringCloud之Feign示例詳解

    本篇文章主要介紹了SpringCloud之Feign示例詳解,詳細(xì)的介紹了Feign簡介和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng)

    Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Idea2019創(chuàng)建Springboot Web項(xiàng)目的方法步驟

    Idea2019創(chuàng)建Springboot Web項(xiàng)目的方法步驟

    這篇文章主要介紹了Idea2019創(chuàng)建Springboot Web項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringBoot整合FTP實(shí)現(xiàn)文件傳輸?shù)牟襟E

    SpringBoot整合FTP實(shí)現(xiàn)文件傳輸?shù)牟襟E

    這篇文章主要給大家介紹了SpringBoot整合FTP實(shí)現(xiàn)文件傳輸?shù)牟襟E,文中的流程步驟和代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • IDEA2021安裝及常用功能設(shè)置

    IDEA2021安裝及常用功能設(shè)置

    這篇文章主要介紹了IDEA2021安裝及常用功能設(shè)置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • SpringBoot2.x中management.security.enabled=false無效的解決

    SpringBoot2.x中management.security.enabled=false無效的解決

    這篇文章主要介紹了SpringBoot2.x中management.security.enabled=false無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論