亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis與Ibatis的區(qū)別

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

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

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

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

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

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

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

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

相關(guān)文章

  • 無感NullPointerException的值相等判斷方法

    無感NullPointerException的值相等判斷方法

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

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

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

    java DataInputStream和DataOutputStream詳解及實例代碼

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論