(1)加載配置並初始化數據庫
觸發條件:加載配置文件緩存
配置來源於兩個地方,一處是配置文件,一處是Java代碼的註解,將SQL的配置信息加載成爲一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。架構
(2)接收調用請求app
觸發條件:調用Mybatis提供的API框架
傳入參數:爲SQL的ID和傳入參數對象架構設計
處理過程:將請求傳遞給下層的請求處理層進行處理。設計
(3)處理操做請求對象
觸發條件:API接口層傳遞請求過來接口
傳入參數:爲SQL的ID和傳入參數對象事務
處理過程:
(A)根據SQL的ID查找對應的MappedStatement對象。
(B)根據傳入參數對象解析MappedStatement對象,獲得最終要執行的SQL和執行傳入參數。
(C)獲取數據庫鏈接,根據獲得的最終SQL語句和執行傳入參數到數據庫執行,並獲得執行結果。
(D)根據MappedStatement對象中的結果映射配置對獲得的執行結果進行轉換處理,並獲得最終的處理結果。
(E)釋放鏈接資源。
(4)返回處理結果
將最終的處理結果返回。
功能架構講解:
咱們把Mybatis的功能架構分爲三層:
(1)API接口層:提供給外部使用的接口API,開發人員經過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
(2)數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操做。
(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或者基本數據類型,並將最終結果返回。