最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • IDEA2021.2永久激活碼最新超詳細(xì)(激活到2099)

    IDEA2021.2永久激活碼最新超詳細(xì)(激活到2099)

    這篇文章主要介紹了IDEA2021.2永久激活碼,是idea2021版最新激活方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java反射與Fastjson的危險反序列化詳解

    Java反射與Fastjson的危險反序列化詳解

    在?Java?中,Computer.class是一個引用,它表示了?Computer?的字節(jié)碼對象(Class對象),這個對象被廣泛應(yīng)用于反射、序列化等操作中,那么為什么?parseObject?需要這個引用呢,帶著這個問題我們一起通過本文學(xué)習(xí)下吧
    2024-07-07
  • servlet重定向詳解(八)

    servlet重定向詳解(八)

    這篇文章主要為大家詳細(xì)介紹了servlet重定向的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Spring Boot中使用Server-Sent Events (SSE) 實(shí)現(xiàn)實(shí)時數(shù)據(jù)推送教程

    Spring Boot中使用Server-Sent Events (SSE) 實(shí)

    Server-Sent Events (SSE) 是HTML5引入的一種輕量級的服務(wù)器向?yàn)g覽器客戶端單向推送實(shí)時數(shù)據(jù)的技術(shù),本文主要介紹了Spring Boot中使用Server-Sent Events (SSE) 實(shí)現(xiàn)實(shí)時數(shù)據(jù)推送教程,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java使用DFA算法實(shí)現(xiàn)敏感詞過濾的示例代碼

    Java使用DFA算法實(shí)現(xiàn)敏感詞過濾的示例代碼

    很多項(xiàng)目中都會有一個敏感詞管理模塊,本文主要介紹了Java使用DFA算法實(shí)現(xiàn)敏感詞過濾的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java如何通過反射取實(shí)體類字段取值

    Java如何通過反射取實(shí)體類字段取值

    這篇文章主要介紹了Java如何通過反射取實(shí)體類字段取值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之小區(qū)物業(yè)管理系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之小區(qū)物業(yè)管理系統(tǒng)的實(shí)現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個小區(qū)物業(yè)管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java 超詳細(xì)講解hashCode方法

    Java 超詳細(xì)講解hashCode方法

    在 Java 應(yīng)用程序執(zhí)行期間,在同一對象上多次調(diào)用 hashCode 方法時,必須一致地返回相同的整數(shù),前提是對象上 equals 比較中所用的信息沒有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無需保持一致
    2022-04-04
  • Java多線程之悲觀鎖與樂觀鎖

    Java多線程之悲觀鎖與樂觀鎖

    這篇文章主要為大家詳細(xì)介紹了Java悲觀鎖與樂觀鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • java比較器Comparable接口與Comaprator接口的深入分析

    java比較器Comparable接口與Comaprator接口的深入分析

    本篇文章是對java比較器Comparable接口與Comaprator接口進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

朝阳区| 龙井市| 灵璧县| 万宁市| 巨野县| 鄂温| 北海市| 凌海市| 大方县| 商丘市| 陇西县| 东阿县| 东方市| 松潘县| 搜索| 鸡西市| 上林县| 会宁县| 库伦旗| 汤阴县| 汉中市| 沁源县| 台州市| 公安县| 富顺县| 绥江县| 呈贡县| 六盘水市| 黄龙县| 抚州市| 济南市| 余干县| 延安市| 洪江市| 天长市| 库伦旗| 长沙市| 武川县| 凤庆县| 芒康县| 浙江省|