精盡MyBatis源碼分析 - 總體架構

該系列文檔是本人在學習 Mybatis 的源碼過程當中總結下來的,可能對讀者不太友好,請結合個人源碼註釋(Mybatis源碼分析 GitHub 地址Mybatis-Spring 源碼分析 GitHub 地址Spring-Boot-Starter 源碼分析 GitHub 地址)進行閱讀html

MyBatis 版本:3.5.2git

MyBatis-Spring 版本:2.0.3github

MyBatis-Spring-Boot-Starter 版本:2.1.4spring

總體架構

本文主要分享 MyBatis 項目的一個總體狀況,對 MyBatis 有個總體的瞭解,能夠去 MyBatis GitHub 上面 Fork 到你本身的 GitHub 上面,而後拉取到本身本地數據庫

項目結構

MyBatis-Structure

根據包名差很少就能夠知道每一個模塊的做用緩存

總體架構

MyBatis 的總體架構分爲三層:基礎支持層核心處理層接口層mybatis

Structure

按照 MyBatis 這個架構圖從下往上對其進行逐步分析,筆者是根據芋道源碼《精盡 MyBatis 源碼分析》一系列文檔學習 MyBatis 的,很是感謝~架構

基礎支持層

基礎支持層,包含整個 MyBatis 的基礎模塊,這些模塊爲核心處理層的功能提供了良好的支撐app

  1. 解析器模塊:解析文件,處理佔位符
  2. 反射模塊:對 Java 原生的反射進行良好的封裝,進行了一系列的優化,提供更加簡潔易用的 API 方便使用
  3. 異常模塊:定義 MyBatis 本身的 Exception
  4. 數據源模塊:提供相應的 DataSource 數據源實現,支持與第三方數據源的繼承
  5. 事務模塊:對數據庫中的事務進行了抽象,提供事務接口的簡單實現
  6. 緩存模塊:提供一級緩存和二級緩存的支持
  7. 類型模塊:提供別名機制,JDBC Type 和 Java Type 之間的轉換
  8. IO模塊:提供資源加載功能
  9. 日誌模塊:提供日誌輸出,支持集成第三方日誌框架
  10. 註解模塊:提供相關注解
  11. Binding模塊:提供 Mapper 接口與 XML 映射文件進行關聯的支持

核心處理層

核心處理層,實現了 MyBatis 的核心處理流程,包括 MyBatis 的初始化以及完成一次數據庫操做的涉及的所有流程框架

接口層

接口層,核心爲 SqlSession 接口,該接口定義了 MyBatis 暴露給應用程序調用的 API,也就是上層應用與 MyBatis 交互的橋樑。接口層在接收到調用請求時,會調用核心處理層的相應模塊來完成具體的數據庫操做

總結

總的來講,MyBatis 的代碼很少,比較簡單易懂,按照上面三個模塊(基礎支持層 => 核心處理層 => 接口層)逐步進行分析,後續會提供一系列的文檔,包含 MyBatis 與 Spring 和 Spring Boot 集成的源碼解析,請熟讀 MyBatis 官方文檔

參考文章:芋道源碼《精盡 MyBatis 源碼分析》

相關文章
相關標籤/搜索