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采用的是“嵌套查詢(xún)”的方式將對(duì)象之間的關(guān)系通過(guò)查詢(xún)語(yǔ)句的直接拼裝來(lái)實(shí)現(xiàn),其效果和在DAO或Service中自行封裝是一樣的。?
不過(guò)這種方式存在“N+1查詢(xún)問(wèn)題”。?
概括地講,N+1查詢(xún)問(wèn)題可以是這樣引起的:?
? 你執(zhí)行了一個(gè)單獨(dú)的SQL語(yǔ)句來(lái)獲取結(jié)果列表(就是+1)。?
? 對(duì)返回的每條記錄,你執(zhí)行了一個(gè)查詢(xún)語(yǔ)句來(lái)為每個(gè)加載細(xì)節(jié)(就是N)。?
這個(gè)問(wèn)題會(huì)導(dǎo)致成百上千的SQL語(yǔ)句被執(zhí)行。這通常不是期望的。
而在Mybatis中,除了兼容ibatis2.x中的“嵌套查詢(xún)”方式外,還提供了直接“嵌套結(jié)果”的方式,其效果相當(dāng)于直接通過(guò)一句sql將查詢(xún)出的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í)查詢(xún)出的記錄數(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è)新的功能:注解。
更多Mybatis與Ibatis的區(qū)別相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

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

AI Clothes Remover
用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

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

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)
