?
1.引言
本文主要講解Mybatis的整體程序設計,理清楚框架的主要脈絡。后面文章我們再詳細講解各個組件。
?
2.整體設計
2.1 總體流程
(1)加載配置并初始化
? ? ? 觸發條件:加載配置文件
? ? ? 配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
??????
(2)接收調用請求
? ? ? 觸發條件:調用Mybatis提供的API
? ? ? 傳入參數:為SQL的ID和傳入參數對象
? ? ? 處理過程:將請求傳遞給下層的請求處理層進行處理。
??????????
(3)處理操作請求
?????? 觸發條件:API接口層傳遞請求過來
?????? 傳入參數:為SQL的ID和傳入參數對象
?????? 處理過程:
? ? ? ? (A)根據SQL的ID查找對應的MappedStatement對象。
? ? ? ? (B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。
? ? ? ? (C)獲取數據庫連接,根據得到的最終SQL語句和執行傳入參數到數據庫執行,并得到執行結果。
? ? ? ? (D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,并得到最終的處理結果。
? ? ? ? (E)釋放連接資源。
???????
(4)返回處理結果
將最終的處理結果返回。
?
2.2?功能架構設計
功能架構講解:
我們把Mybatis的功能架構分為三層:
(1)API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
(2)數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。
(3)基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。
?
2.3?框架架構設計
?
框架架構講解:
(1)加載配置:配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
(2)SQL解析:當API接口層接收到調用請求時,會接收到傳入SQL的ID和傳入對象(可以是Map、JavaBean或者基本數據類型),Mybatis會根據SQL的ID找到對應的MappedStatement,然后根據傳入參數對象對MappedStatement進行解析,解析后可以得到最終要執行的SQL語句和參數。
(3)?SQL執行:將最終得到的SQL和參數拿到數據庫進行執行,得到操作數據庫的結果。
(4)結果映射:將操作數據庫的結果按照映射的配置進行轉換,可以轉換成HashMap、JavaBean或者基本數據類型,并將最終結果返回。