程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Mybatis與Ibatis的差別

Mybatis與Ibatis的差別

編輯:關於JAVA

Mybatis與Ibatis的差別。本站提示廣大學習愛好者:(Mybatis與Ibatis的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是Mybatis與Ibatis的差別正文


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供給了一個新的功效:注解。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved