Mybatis經常使用用法之 Mybatis架構原理

這是我參與更文挑戰的第4天,活動詳情查看: 更文挑戰java

一:架構設計

image.png 咱們把Mybatis的功能架構分爲三層:
(1) API接口層:提供給外部使用的接口 API,開發人員經過這些本地API來操縱數據庫。接口層一接收到 調用請求就會調用數據處理層來完成具體的數據處理。 MyBatis和數據庫的交互有兩種方式:
a. 使用傳統的MyBati s提供的API ;
b. 使用Mapper代理的方式
(2) 數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根 據調用的請求完成一次數據庫操做。
(3) 基礎支撐層:負責最基礎的功能支撐,包括鏈接管理、事務管理、配置加載和緩存處理,這些都是 共 用的東西,將他們抽取出來做爲最基礎的組件。爲上層的數據處理層提供最基礎的支撐web

二:主要構件及其相互關係

構建 描述
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 MappedStatement維護了一條<select /update / delete / insert>節點 的封 裝
SqlSource 負責根據用戶傳遞的parameterObject,動態地生成SQL語句,將信息封 裝到BoundSql對象中,並返回
BoundSql 表示動態生成的SQL語句以及相應的參數信息

image.png

三:整體流程

(1) 加載配置並初始化 觸發條件:加載配置文件

      配置來源於兩個地方,一個是配置文件(主配置文件conf.xml,mapper文件*.xml),—個是java代碼中的 註解,將主配置文件內容解析封裝到Configuration,將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) 返回處理結果

      將最終的處理結果返回。markdown

相關文章
相關標籤/搜索