Mybatis技術內幕(1):Mybatis簡介

1.1 ORM簡介

JDBC是Java與數據庫交互的統一API.傳統的JDBC編程的操做步驟以下:html

  • (1)、註冊數據庫驅動,明確指定數據庫URL地址、數據庫用戶名、密碼等鏈接信息
  • (2)、經過DriverManager打開數據庫鏈接
  • (3)、經過數據庫鏈接建立Statement對象
  • (4)、經過Statement對象執行SQL語句,獲得ResultSet對象
  • (5)、經過ResultSet讀取數據,並將數據轉換成JavaBean對象
  • (6)、關閉ResultSet、Statement對象以及數據庫鏈接,釋放相關資源

ORM(Object-Relational-Mapping)對象關係映射,將JavaBean和數據庫對象進行相互的轉換。java

1.2 常見持久化框架

Hibernate、MyBatis、JPA、Spring JDBCgit

2.0 Mybatis簡介

  MyBatis的前身是iBATIS,是Clinton-Begin在2001年發起的一個開源項目,最初側重於密碼軟件的開發,後來發展成爲一款基於Java的持久層框架。2004年Clinton將iBATIS的名字和源碼捐贈給了Apache軟件基金會,接下來的6年中,開源軟件世界發生了巨大的變化, 一切開發實踐、基礎設施、許可,甚至數據庫技術都完全改變了。2010年核心開發團隊決定離開Apache軟件基金會,而且將iBATIS更名爲MyBatis。
  MyBatis是一款優秀的支持自定義SQL查詢、存儲過程和高級映射的持久層框架,消除了幾乎全部的JDBC代碼和參數的手動設置以及結果集的檢索。MyBatis可使用XML或註解進行配置和映射,MyBatis經過將參數映射到配置的SQL造成最終執行的SQL 語句,最後將執行SQL的結果映射成Java對象返回。
  與其餘的ORM(對象關係映射)框架不一樣,MyBatis並無將Java對象與數據庫表關聯起來,而是將Java方法與SQL語句關聯。MyBatis容許用戶充分利用數據庫的各類功能,例如存儲過程、視圖、各類複雜的查詢以及某數據庫的專有特性。若是要對遺留數據庫、不規範的數據庫進行操做,或者要徹底控制SQL的執行,MyBatis將會是一個不錯的選擇。
  與JDBC相比,MyBatis簡化了相關代碼,SQL語句在一行代碼中就能執行。MyBatis提供了一個映射引擎,聲明式地將SQL語句的執行結果與對象樹映射起來。經過使用一種內建的類XML 表達式語言SQL 語句能夠被動態生成。   github

2.1 Mybatis總體架構

MyBatis總體分爲三層:基礎支持層、核心處理層、接口層 sql

具體的模塊,後面章節會深刻討論.

2.2 Mybatis SQL執行流程

SQL語句的執行涉及各個組件,其中比較重要的是Executor,StatementHandler,ParameterHandler和ResultSetHandler。
  Executor主要負責一級緩存和二級緩存,並提供是事務管理的相關操做,它會將數據庫相關操做委託給StatementHandler完成,StatementHandler首先經過ParammeterHandler完成SQL的實參綁定,而後經過java.sql.Statement對象執行sql語句並獲得結果集ResultSet,最後經過ResultSetHandler完成結果集的映射,獲得對象並返回。以下圖所示: 數據庫

2.3 Mybatis源碼

2.4 Mybatis書籍推薦

  • 劉增輝 《MyBatis 從入門到精通》
  • 徐郡明 《MyBatis 技術內幕》 重源碼

2.5 Mybatis網址推薦

Mybatis系列文章內容來自一些大牛的網絡博客和Mybatis技術書籍,主要用於記錄、彙總和結合一些本身的想法。分享給你們一塊兒學習編程

失控的阿甘,樂於分享,記錄點滴緩存

相關文章
相關標籤/搜索