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

失控的阿甘發表於2019-03-04

1.1 ORM簡介

JDBC是Java與資料庫互動的統一API.傳統的JDBC程式設計的操作步驟如下:

  • (1)、註冊資料庫驅動,明確指定資料庫URL地址、資料庫使用者名稱、密碼等連線資訊
  • (2)、通過DriverManager開啟資料庫連線
  • (3)、通過資料庫連線建立Statement物件
  • (4)、通過Statement物件執行SQL語句,得到ResultSet物件
  • (5)、通過ResultSet讀取資料,並將資料轉換成JavaBean物件
  • (6)、關閉ResultSet、Statement物件以及資料庫連線,釋放相關資源

ORM(Object-Relational-Mapping)物件關係對映,將JavaBean和資料庫物件進行相互的轉換。

1.2 常見持久化框架

Hibernate、MyBatis、JPA、Spring JDBC

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 語句可以被動態生成。   

2.1 Mybatis整體架構

MyBatis整體分為三層:基礎支援層、核心處理層、介面層

Mybatis技術內幕(1):Mybatis簡介
具體的模組,後面章節會深入討論.

2.2 Mybatis SQL執行流程

SQL語句的執行涉及各個元件,其中比較重要的是Executor,StatementHandler,ParameterHandler和ResultSetHandler。
  Executor主要負責一級快取和二級快取,並提供是事務管理的相關操作,它會將資料庫相關操作委託給StatementHandler完成,StatementHandler首先通過ParammeterHandler完成SQL的實參繫結,然後通過java.sql.Statement物件執行sql語句並得到結果集ResultSet,最後通過ResultSetHandler完成結果集的對映,得到物件並返回。如下圖所示:

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

2.3 Mybatis原始碼

2.4 Mybatis書籍推薦

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

2.5 Mybatis網址推薦

Mybatis系列文章內容來自一些大牛的網路部落格和Mybatis技術書籍,主要用於記錄、彙總和結合一些自己的想法。分享給大家一起學習

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

相關文章