日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

11、mybatis的功能架构分析

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11、mybatis的功能架构分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Mybatis功能架構

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

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

3)基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。

2、Mybatis基本工作原理及工作流程圖

3、Mybatis的工作原理文本描述

3、1 創建SqlSessionFactory

框架初始化時,全局配置文件和sql映射文件中的內容會經過解析,最終添加在一個Configuration對象中,返回一個包含了Configuration的DefaultSqlSession對象。Mapper.xml中的增刪改查標簽會被解析,每一個增刪改查標簽都會被解析并封裝到一個MappedStatement中,此時會根據配置信息創建SqlSessionFactory;

3、2? 創建SqlSession

根據SqlSessionFactory 創建 SqlSession;

3、3 獲取接口的代理對象

通過 SqlSession 對象獲取接口的代理對象,調用getMapper方法時,使用MapperProxyFactory創建一個MapperProxy的代理對象,代理對象里邊包含DeafaultSqlSessionExecutor)。

3、4 進行具體的數據操作

通過Executor 進行具體的sql預編譯、參數類型映射和處理結果集操作。具體為:

StatementHandler 處理sql語句預編譯,設置參數;

Parameterhandler 設置預編譯參數用的ResultHandler,處理結果集;

TypeHandler 在整個過程中進行數據庫類型和javaBean 類型的映射;

4、Mybatis的核心組件功能分析

Configuration?MyBatis所有的配置信息都保存在Configuration對象之中,配置文件中的大部分配置都會存儲到該類中
SqlSession作為MyBatis工作的主要頂層API,表示和數據庫交互時的會話,完成必要數據庫增刪改查功能
ExecutorMyBatis執行器,是MyBatis 調度的核心,負責SQL語句的生成和查詢緩存的維護
StatementHandler封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設置參數等
ParameterHandler?負責對用戶傳遞的參數轉換成JDBC Statement 所對應的數據類型,處理預編譯
ResultSetHandler負責將JDBC返回的ResultSet結果集對象轉換成List類型的集合
TypeHandler?負責java數據類型和jdbc數據類型(也可以說是數據表列類型)之間的映射和轉換
MappedStatement?MappedStatement維護一條<select|update|delete|insert>節點的封裝
SqlSource負責根據用戶傳遞的parameterObject,動態地生成SQL語句,將信息封裝到BoundSql對象中,并返回
BoundSql表示動態生成的SQL語句以及相應的參數信息

接下來偷個懶,直接引用一位仁兄的分析過程

Mybatis(四):MyBatis核心組件介紹原理解析和源碼解讀

總結

以上是生活随笔為你收集整理的11、mybatis的功能架构分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。