Mybatis概述(一)

近期抽空閱讀了mybatis 3.3.1版本源碼,受益匪淺,遂記錄一下學習筆記,難免有理解或者寫的不恰當的地方,請多諒解。

概述

以下是官方文檔的原文。

What is MyBatis?

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

Mybatis優缺點

優點

  • 易於上手和掌握

  • sql寫在xml裏,便於統一管理和優化

  • 解除sql與程序代碼的耦合

  • 提供映射標籤,支持對象與數據庫的orm字段關係映射

  • 提供對象關係映射標籤,支持對象關係組建維護

  • 提供xml標籤,支持編寫動態sql

缺點

  • sql工作量很大,尤其是字段多、關聯表多時,更是如此。

  • sql依賴於數據庫,導致數據庫移植性差。

  • 由於xml裏標籤id必須唯一,導致DAO中方法不支持方法重載。

  • 字段映射標籤和對象關係映射標籤僅僅是對映射關係的描述,具體實現仍然依賴於sql。(比如配置了一對多Collection標籤,如果sql裏沒有join子表或查詢子表的話,查詢後返回的對象是不具備對象關係的,即Collection的對象爲null)

  • DAO層過於簡單,對象組裝的工作量較大。

  • 不支持級聯更新、級聯刪除。

  • 編寫動態sql時,不方便調試,尤其邏輯複雜時,提供的寫動態sql的xml標籤功能簡單(連struts都比不上),編寫動態sql仍然受限,且可讀性低。

  • 若不查詢主鍵字段,容易造成查詢出的對象有“覆蓋”現象。

  • 參數的數據類型支持不完善。(如參數爲Date類型時,容易報沒有get、set方法,需在參數上加@param)

  • 多參數時,使用不方便,功能不夠強大。(目前支持的方法有map、對象、註解@param以及默認採用012索引位的方式)

  • 緩存使用不當,容易產生髒數據。

整體架構

這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章