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

Mybatis與Ibatis的區(qū)別

 更新時(shí)間:2016年05月05日 10:09:11   作者:u_wei_wei  
這篇文章主要介紹了Mybatis與Ibatis的區(qū)別,需要的朋友可以參考下

Mybatis與Ibatis的區(qū)別:
1、Mybatis實(shí)現(xiàn)了接口綁定,使用更加方便
在ibatis2.x中我們需要在DAO的實(shí)現(xiàn)類(lèi)中指定具體對(duì)應(yīng)哪個(gè)xml映射文件,
而Mybatis實(shí)現(xiàn)了DAO接口與xml映射文件的綁定,自動(dòng)為我們生成接口的具體實(shí)現(xiàn),使用起來(lái)變得更加省事和方便。
這可以說(shuō)是Mybatis最重要的改進(jìn)。

注意:
雖然Mybatis支持在接口中直接使用annotation的配置方式來(lái)簡(jiǎn)化配置,
不過(guò)強(qiáng)烈建議仍然使用xml配置的方式。畢竟annotation的配置方式功能有限且代碼入侵性太強(qiáng)。使用xml配置方式才能體現(xiàn)出Mybatis的優(yōu)勢(shì)所在

2、對(duì)象關(guān)系映射的改進(jìn),效率更高
相信很多在使用ibatis2.x的朋友并沒(méi)有通過(guò)ibatis的xml映射文件來(lái)實(shí)現(xiàn)對(duì)象間的關(guān)系映射。其實(shí)也確實(shí)沒(méi)有必要那么做,因?yàn)閕batis2.x采用的是“嵌套查詢”的方式將對(duì)象之間的關(guān)系通過(guò)查詢語(yǔ)句的直接拼裝來(lái)實(shí)現(xiàn),其效果和在DAO或Service中自行封裝是一樣的。
不過(guò)這種方式存在“N+1查詢問(wèn)題”。
概括地講,N+1查詢問(wèn)題可以是這樣引起的:
? 你執(zhí)行了一個(gè)單獨(dú)的SQL語(yǔ)句來(lái)獲取結(jié)果列表(就是+1)。
? 對(duì)返回的每條記錄,你執(zhí)行了一個(gè)查詢語(yǔ)句來(lái)為每個(gè)加載細(xì)節(jié)(就是N)。
這個(gè)問(wèn)題會(huì)導(dǎo)致成百上千的SQL語(yǔ)句被執(zhí)行。這通常不是期望的。

而在Mybatis中,除了兼容ibatis2.x中的“嵌套查詢”方式外,還提供了直接“嵌套結(jié)果”的方式,其效果相當(dāng)于直接通過(guò)一句sql將查詢出的dto對(duì)象自動(dòng)封裝成所需的對(duì)象。
具體實(shí)現(xiàn)方法請(qǐng)自行參考Mybatis官方使用手冊(cè),不在此累述.

不過(guò)實(shí)際上這一改進(jìn)所帶來(lái)的好處也是很有限的。因?yàn)檫@一方式在使用分頁(yè)的時(shí)候并不起作用,或者說(shuō)嵌套對(duì)象的結(jié)果集是不允許進(jìn)行分頁(yè)的。這一點(diǎn)在Mybatis框架中已經(jīng)做出了明確的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler里34行),而實(shí)際項(xiàng)目中需要分頁(yè)的情況又特別多……
仔細(xì)一想,一對(duì)多映射確實(shí)不能通過(guò)配置文件來(lái)分頁(yè),因?yàn)檫@時(shí)查詢出的記錄數(shù)并不等于實(shí)際返回對(duì)象的size,不過(guò)一對(duì)一映射為什么也不允許就不太明白了。可能是因?yàn)橐粚?duì)一是一對(duì)多的特例,而在設(shè)計(jì)框架的時(shí)候并沒(méi)有考慮去處理或是難于處理這一特例吧。

3、MyBatis采用功能強(qiáng)大的基于OGNL的表達(dá)式來(lái)消除其他元素
熟悉struts2的人應(yīng)該對(duì)OGNL表達(dá)式不會(huì)感到陌生,
MyBatis采用OGNL表達(dá)式簡(jiǎn)化了配置文件的復(fù)雜性,使用起來(lái)更簡(jiǎn)潔。

可能較為關(guān)心的是
Mybatis實(shí)現(xiàn)了接口綁定,使用更加方便。
iBatis / MyBatis 3提供了一個(gè)新的功能:注解。

相關(guān)文章

  • 無(wú)感NullPointerException的值相等判斷方法

    無(wú)感NullPointerException的值相等判斷方法

    當(dāng)我們需要去判斷一個(gè)?入?yún)?查庫(kù)?返回的開(kāi)關(guān)變量(通常是個(gè)Integer類(lèi)型的)時(shí),常常會(huì)寫(xiě)如下的if-else判斷語(yǔ)句。但又會(huì)為在生產(chǎn)環(huán)境看到的「NullPointerException」感到困擾,遇到這個(gè)問(wèn)題如何處理呢,下面小編通過(guò)本文給大家詳細(xì)講解,需要的朋友參考下吧
    2023-02-02
  • Java基于深度優(yōu)先遍歷的隨機(jī)迷宮生成算法

    Java基于深度優(yōu)先遍歷的隨機(jī)迷宮生成算法

    今天小編就為大家分享一篇關(guān)于Java基于深度優(yōu)先遍歷的隨機(jī)迷宮生成算法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • java DataInputStream和DataOutputStream詳解及實(shí)例代碼

    java DataInputStream和DataOutputStream詳解及實(shí)例代碼

    這篇文章主要介紹了java DataInputStream和DataOutputStream詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • java JTree JCheckBox樹(shù)復(fù)選框詳解

    java JTree JCheckBox樹(shù)復(fù)選框詳解

    這篇文章主要為大家詳細(xì)介紹了java JTree JCheckBox樹(shù)復(fù)選框的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能

    SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能

    郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,本文給大家介紹了可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的郵件發(fā)送功能的實(shí)例,文中通過(guò)代碼給大家介紹的非常詳細(xì),感興趣的朋友可以參考下
    2023-12-12
  • 簡(jiǎn)單介紹區(qū)分applet和application的方法

    簡(jiǎn)單介紹區(qū)分applet和application的方法

    applet和application都是Java語(yǔ)言編寫(xiě)出來(lái)的應(yīng)用程序,本文簡(jiǎn)單介紹了二者的不同之處,需要的朋友可以參考下
    2017-09-09
  • Java?JVM虛擬機(jī)調(diào)優(yōu)詳解

    Java?JVM虛擬機(jī)調(diào)優(yōu)詳解

    JVM是JavaVirtualMachine(Java虛擬機(jī))的縮寫(xiě),JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的,本文主要介紹了jvm調(diào)優(yōu),感興趣的小伙伴們可以參考一下<BR>
    2022-07-07
  • 導(dǎo)入SpringCloud依賴踩的坑及解決

    導(dǎo)入SpringCloud依賴踩的坑及解決

    這篇文章主要介紹了導(dǎo)入SpringCloud依賴踩的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • mybatisPlus條件構(gòu)造器常用方法小結(jié)

    mybatisPlus條件構(gòu)造器常用方法小結(jié)

    這篇文章主要介紹了mybatisPlus條件構(gòu)造器常用方法,首先是.select和其他條件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Android應(yīng)用開(kāi)發(fā)之將SQLite和APK一起打包的方法

    Android應(yīng)用開(kāi)發(fā)之將SQLite和APK一起打包的方法

    這篇文章主要介紹了Android應(yīng)用開(kāi)發(fā)之將SQLite和APK一起打包的方法,文章時(shí)間較早,盡管現(xiàn)在開(kāi)發(fā)環(huán)境已大都遷移至Android Studio上,但打包原理依然相同,需要的朋友可以參考下
    2015-08-08

最新評(píng)論