Mybatis與Ibatis的區(qū)別:?
1、Mybatis實現(xiàn)了介面綁定,使用更方便?
在ibatis2.x中我們需要在DAO的實現(xiàn)類別中指定具體對應(yīng)哪個xml映射文件,?
而Mybatis實現(xiàn)了DAO接口與xml映射檔案的綁定,自動為我們產(chǎn)生介面的具體實現(xiàn),使用起來變得更加省事和方便。?
這可以說是Mybatis最重要的進步。
注意:?
雖然Mybatis支援在介面中直接使用annotation的設(shè)定方式來簡化配置,?
不過強烈建議仍使用xml配置的方式。畢竟annotation的配置方式功能有限且程式碼入侵性太強。使用xml設(shè)定方式才能體現(xiàn)Mybatis的優(yōu)點所??在
2、物件關(guā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í)行了一個查詢語句來為每個載入細節(jié)(就是N)。?
這個問題會導(dǎo)致數(shù)百上千的SQL語句被執(zhí)行。這通常不是期望的。
而在Mybatis中,除了相容ibatis2.x中的「巢狀查詢」方式外,還提供了直接「嵌套結(jié)果」的方式,其效果相當於直接透過一句sql將查詢出的dto物件自動封裝成所需的對象。?
具體實現(xiàn)方法請自行參考Mybatis官方使用手冊,不在此累述.
不過實際上這項改進所帶來的好處也是很有限的。因為這一方式在使用分頁的時候並不起作用,或者說嵌套物件的結(jié)果集是不允許進行分頁的。這一點在Mybatis框架中已經(jīng)做出了明確的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler裡34行),而實際項目中需要分頁的情況又特別多…?
仔細一想,一對多映射確實不能透過設(shè)定檔來分頁,因為這時查詢出的記錄數(shù)並不等於實際回傳物件的size,不過一對一映射為什麼也不允許就不太明白了??赡苁且驗橐粚σ皇且粚Χ嗟奶乩?,而在設(shè)計框架的時候並沒有考慮去處理或是難於處理這一特例吧。
3、MyBatis採用強大的基於OGNL的表達式來消除其他元素?
熟悉struts2的人應(yīng)該對OGNL表達式不會感到陌生,?
MyBatis採用OGNL表達式簡化了配置文件的複雜性,使用起來更陌生簡潔。
可能較關(guān)心的是?
Mybatis實現(xiàn)了介面綁定,使用更加方便。?
iBatis / MyBatis 3提供了一個新的功能:註解。
更多Mybatis與Ibatis的區(qū)別相關(guān)文章請關(guān)注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)