參考 知識星球 中 芋道源碼 星球的源碼解析,一個活躍度非常高的 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 的整體架構分為三層:基礎支持層、核心處理層和接口層

按照 MyBatis 這個架構圖從下往上對其進行逐步分析,筆者是根據芋道源碼《精盡 MyBatis 源碼分析》一系列文檔學習 MyBatis 的,非常感謝~
基礎支持層
基礎支持層,包含整個 MyBatis 的基礎模塊,這些模塊為核心處理層的功能提供了良好的支撐
- 解析器模塊:解析文件,處理占位符
- 反射模塊:對 Java 原生的反射進行良好的封裝,進行了一系列的優化,提供更加簡潔易用的 API 方便使用
- 異常模塊:定義 MyBatis 自己的 Exception
- 數據源模塊:提供相應的 DataSource 數據源實現,支持與第三方數據源的繼承
- 事務模塊:對數據庫中的事務進行了抽象,提供事務接口的簡單實現
- 緩存模塊:提供一級緩存和二級緩存的支持
- 類型模塊:提供別名機制,JDBC Type 和 Java Type 之間的轉換
- IO模塊:提供資源加載功能
- 日志模塊:提供日志輸出,支持集成第三方日志框架
- 注解模塊:提供相關注解
- Binding模塊:提供 Mapper 接口與 XML 映射文件進行關聯的支持
核心處理層
核心處理層,實現了 MyBatis 的核心處理流程,包括 MyBatis 的初始化以及完成一次數據庫操作的涉及的全部流程
接口層
接口層,核心為 SqlSession 接口,該接口定義了 MyBatis 暴露給應用程序調用的 API,也就是上層應用與 MyBatis 交互的橋梁。接口層在接收到調用請求時,會調用核心處理層的相應模塊來完成具體的數據庫操作
總結
總的來說,MyBatis 的代碼不多,比較簡單易懂,按照上面三個模塊(基礎支持層 => 核心處理層 => 接口層)逐步進行分析,后續會提供一系列的文檔,包含 MyBatis 與 Spring 和 Spring Boot 集成的源碼解析,請熟讀 MyBatis 官方文檔
參考文章:芋道源碼《精盡 MyBatis 源碼分析》