MyBatis 源碼分析 - 整體架構


參考 知識星球芋道源碼 星球的源碼解析,一個活躍度非常高的 Java 技術社群,感興趣的小伙伴可以加入 芋道源碼 星球,一起學習😄

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

MyBatis 版本:3.5.2

MyBatis-Spring 版本:2.0.3

MyBatis-Spring-Boot-Starter 版本:2.1.4

該系列其他文檔請查看:《精盡 MyBatis 源碼分析 - 文章導讀》

整體架構

本文主要分享 MyBatis 項目的一個整體情況,對 MyBatis 有個整體的了解,可以去 MyBatis GitHub 上面 Fork 到你自己的 GitHub 上面,然后拉取到自己本地

項目結構

MyBatis-Structure

根據包名差不多就可以知道每個模塊的作用

整體架構

MyBatis 的整體架構分為三層:基礎支持層核心處理層接口層

Structure

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

基礎支持層

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

  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 源碼分析》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM