mybatis源碼解析第二課-mybatis總體架構設計

一、myabtis架構圖

要學習一個項目,或者說不管學習什麼知識,首先你必須要先了解它的總體設計思想,在此基礎上再去細分深入研究才能逐漸的去理解作者的意圖,讓你的學習事半功倍;
1、功能流程層次描述MyBatis的整體架構圖
在這裏插入圖片描述
2、MyBatis源碼包對應的架構圖
在這裏插入圖片描述

在應用啓動的時候,MyBatis解析兩種配置文件
SqlMapConfig.xml
SqlMap.xml
SqlMapConfig.xml是在XMLConfigBuilder類中完成解析的
SqlMap.xml是在XMLMapperBuilder中解析完成的,其中把對Statement的解析(即SqlMap.xml中SELECT|INSERT|UPDATE|DELETE定義部分)委託給XMLStatementBuilder來完成。
MyBatis使用的是org.wrc.dom

MyBatis中Executor是核心,圍繞着它完成了數據庫操作的完整過程。

SQL執行的時序圖
在這裏插入圖片描述

3、主要的類
SqlSession:作爲mybatis工作的主要頂層API,表示和數據庫交互的會話,完成必要數據庫增刪改查功能
Executor:mybatis執行器,是mybatis調度的核心,賦值SQL語句的生成和查詢緩存的維護
StatementHandler:封裝了JDBC Statement操作,負責對JDBC statement的操作,如設置參數、將Statement結果集轉換成list集合
ParameterHandler:負責對用戶傳遞的參數轉換成JDBC Statement所需要的參數
ResultSetHandler:負責將JDBC返回的ResultSet結果集對象轉換成List類型的集合
TypeHandler:負責java數據類型和jdbc數據類型之間的映射和轉換
MappedStatement:維護了一條< select|update|delete|insert>節點的封裝
SqlSource:負責根據用戶傳遞的parameterObject,動態地生成SQL語句, 將信息封裝到BoundSql對象中,並返回
BoundSql:表示動態生成的SQL語句以及相應的參數信息
Configuration:MyBatis所有的配置信息都維持在Configuration對象之中

https://blog.csdn.net/luanlouis/article/details/40422941
https://blog.csdn.net/Dream__Snow/article/details/79261922

mysql執行過程
在這裏插入圖片描述

我們把Mybatis的功能架構分爲三層:
(1)API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
(2)數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。
(3)基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作爲最基礎的組件。爲上層的數據處理層提供最基礎的支撐。 [3]

源碼調試:
https://blog.csdn.net/a412451848/article/details/82723754
https://blog.csdn.net/qq_18860653/article/details/80605690

源碼學習:
http://www.cnblogs.com/dongying/tag/Mybatis深入淺出系列/

https://mp.weixin.qq.com/s/6MTC0KJq8fvshtgRbvvhWQ
https://mp.weixin.qq.com/s/UF6mKtNFcf5XLV2xgYmCBQ

手寫mybatis
https://www.jianshu.com/p/73ee8caddc68?open_source=weibo_search
https://mp.weixin.qq.com/s/6MTC0KJq8fvshtgRbvvhWQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章