綜合技術 --myBatis理解

myBatis是一個基於java的持久層框架,它提供的持久層框架包括 SQL Maps和Data Access Objescts(DAO)。
java

myBatis是支持普通的SQL查詢、存儲過程和高級映射的持久層框架。myBatis使用簡單的XML或註釋用於配置和原始映射,將接口和java的對象映射成數據庫中的記錄。sql

每一個myBatis應用程序主要都是使用sqlSesionFactory實例的,一個sqlSesionFactory實例能夠經過sqlSesionFactoryBuilder得到,sqlSesionFactoryBuilder能夠從一個XML配置文件或者一個預約義的配置類的實例得到。數據庫

用xml文件能夠很方便的構建sqlSesionFactory實例,配置的時候推薦使用 類路徑資源,固然也可使用其餘的reader實例。myBatis有一個資源類--Resources,它有不少方法,能夠方便的從類路徑及其它位置加載資源。api

myBatis的流程緩存

1.加載配置文件並初始化 架構

觸發條件:加載配置文件app

將SQL的配置信息加載成爲一個個的MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。框架

2.接收調用請求ui

觸發條件:調用myBatis提供的apispa

傳入參數:爲SQL的ID和傳入參數對象

處理過程:將請求傳遞給下層的請求處理層 進行處理

3.處理操做請求

觸發條件:API接口層傳遞請求過來

傳入參數:爲SQL的ID和傳入參數對象

處理過程:

3-1. 根據SQL的ID查詢對應的mappedStatement對象。

3-2. 根據傳入參數對象 解析mappedStatement對象,獲得最終要執行的SQL和執行傳入參數。

3-3. 獲取數據庫鏈接,根據獲得的最終SQL語句和執行傳入參數到數據庫執行,並獲得執行結果。

3-4. 根據mappedStatement對象中的結果映射配置 對 獲得的執行結果進行轉換處理,並獲得最終的處理結果。

3-5. 釋放鏈接資源。

3-6. 返回處理結果將最終的處理結果返回。

總結myBatis的流程:

1.加載配置文件並初始化

主要是將SQL的配置信息加載成爲一個個的mappedStatement對象,並存儲在內存中。SQL的配置信息包括:傳入參數映射配置、執行的SQL配置和結果映射配置。

2.接收調用請求

主要是完成一箇中轉工做,接收傳入參數(包括SQL的ID、傳入的對象),調用api,將請求傳遞給下一層處理。

3.處理操做請求

它接收api傳過來的處理請求,完成具體操做,包括:

3-1 根據SQL的ID找其對應的mappedStatement對象。

3-2 根據傳入的參數對象 解析mappedStatement,獲得最終要執行的SQL語句和執行傳入參數。

3-3 鏈接數據庫,傳入3-2處理的結果參數,執行,獲得執行結果。

3-4 對執行的結果進行映射處理,獲得最終結果

3-5 關閉數據庫

3-6 返回處理的最終結果

myBatis功能框架

myBatis的功能框架分爲三層:

1.API接口層

提供給外部使用的接口API,開發人員經過這些本地的API來操縱數據庫。當接口層接收到調用請求時,它會調用數據處理層來完成具體的數據處理。

2.數據處理層

負責具體的SQL查找、解析、執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操做。

3.基礎支撐層

負責最基礎的功能支撐,包括鏈接管理、事務管理、配置加載和緩存處理,這些都是公共的東西,將它們抽取出來做爲最基礎的組件,爲上層的數據處理提供支撐。

myBatis框架架構

框架架構詳解

1.加載配置:配置來源於兩個地方,一處是配置文件,另外一處是java代碼註解,將SQL的配置信息加載成爲一個個的MappedStatement對象(包括 傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。

2.SQL解析:當API接口層接收到調用請求時,會接收到傳入SQL的ID和傳入對象(能夠是Map、javaBean或者基本數據類型),myBatis會根據SQL的id找到對應的mappedStatement,而後根據傳入參數對象對mappedStatement進行解析,解析後能夠獲得最終要執行的SQL語句和參數。

3.SQL執行:將最終獲得的SQL和參數拿到數據庫進行執行,獲得操做數據庫的結果。

4.結果映射:將操做數據庫的結果按照 映射的配置 進行轉換,能夠轉換成HashMap、JavaBean或者基本數據類型,並將最終結果返回。

動態SQL

myBatis最強大的特性之一就是它的動態語句功能,之前使用jdbc框架的時候,要將不少SQL條件語句鏈接在一塊兒,要記不少語句的格式,常常出現各類各樣的錯誤,如今使用myBatis動態語句能夠解決如上繁瑣的問題。

相關文章
相關標籤/搜索