首頁 php教程 PHP开发 Mybatis與Ibatis的差別

Mybatis與Ibatis的差別

Jan 05, 2017 pm 05:18 PM

Mybatis與Ibatis的區別: 
1、Mybatis實現了介面綁定,使用更方便 
在ibatis2.x中我們需要在DAO的實現類別中指定具體對應哪個xml映射文件, 
而Mybatis實現了DAO接口與xml映射檔案的綁定,自動為我們產生介面的具體實現,使用起來變得更加省事和方便。 
這可以說是Mybatis最重要的進步。

注意: 
雖然Mybatis支援在介面中直接使用annotation的設定方式來簡化配置, 
不過強烈建議仍使用xml配置的方式。畢竟annotation的配置方式功能有限且程式碼入侵性太強。使用xml設定方式才能體現Mybatis的優點所​​在

2、物件關係映射的改進,效率更高 
相信許多在使用ibatis2.x的朋友並沒有透過ibatis的xml映射檔來實現物件間的關係映射。其實也確實沒有必要那麼做,因為ibatis2.x採用的是「巢狀查詢」的方式將物件之間的關係透過查詢語句的直接拼裝來實現,其效果和在DAO或Service中自行封裝是一樣的。 
不過這種方式有「N+1查詢問題」。 
概括地講,N+1查詢問題可以是這樣造成的: 
? 你執行了一個單獨的SQL語句來取得結果清單(就是+1)。 
? 對回傳的每筆記錄,你執行了一個查詢語句來為每個載入細節(就是N)。 
這個問題會導致數百上千的SQL語句被執行。這通常不是期望的。

而在Mybatis中,除了相容ibatis2.x中的「巢狀查詢」方式外,還提供了直接「嵌套結果」的方式,其效果相當於直接透過一句sql將查詢出的dto物件自動封裝成所需的對象。 
具體實現方法請自行參考Mybatis官方使用手冊,不在此累述.

不過實際上這項改進所帶來的好處也是很有限的。因為這一方式在使用分頁的時候並不起作用,或者說嵌套物件的結果集是不允許進行分頁的。這一點在Mybatis框架中已經做出了明確的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler裡34行),而實際項目中需要分頁的情況又特別多… 
仔細一想,一對多映射確實不能透過設定檔來分頁,因為這時查詢出的記錄數並不等於實際回傳物件的size,不過一對一映射為什麼也不允許就不太明白了。可能是因為一對一是一對多的特例,而在設計框架的時候並沒有考慮去處理或是難於處理這一特例吧。

3、MyBatis採用強大的基於OGNL的表達式來消除其他元素 
熟悉struts2的人應該對OGNL表達式不會感到陌生, 
MyBatis採用OGNL表達式簡化了配置文件的複雜性,使用起來更陌生簡潔。

可能較關心的是 
Mybatis實現了介面綁定,使用更加方便。 
iBatis / MyBatis 3提供了一個新的功能:註解。


更多Mybatis與Ibatis的區別相關文章請關注PHP中文網!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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