MyBatis的架構(gòu)原理
300本計(jì)算機(jī)編程的經(jīng)典書籍下載
AI全套:Python3+TensorFlow打造人臉識別智能小程序
最新人工智能資料-Google工程師親授 Tensorflow-入門到進(jìn)階
黑馬頭條項(xiàng)目 - Java Springboot2.0(視頻、資料、代碼和講義)14天完整版
作者:云羋山人
鏈接:https://www.jianshu.com/p/102e8736dae2
MyBatis架構(gòu)圖

接口層
是MyBatis提供給開發(fā)人員的一套API,只要使用SqlSession接口,通過SqlSession接口和Mapper接口,開發(fā)人員可以通知MyBatis框架調(diào)用哪一條SQL命令以及SQL命令關(guān)聯(lián)參數(shù)。
數(shù)據(jù)處理層
是MyBatis框架內(nèi)部的核心實(shí)現(xiàn),來完成對映射文件的解析與數(shù)據(jù)處理。
參數(shù)解析與參數(shù)綁定
SQL解析
結(jié)果集映射解析與結(jié)果集映射處理
支撐層
用來完成MyBatis與數(shù)據(jù)庫基本連接方式以及SQL命令與配置文件對應(yīng),主要負(fù)責(zé):
MyBatis與數(shù)據(jù)庫連接方式管理
MyBatis對事務(wù)管理方式
配置文件加載
MyBatis查詢緩存管理
架構(gòu)流程圖

MyBatis配置文件
config.xml:配置了全局配置文件,配置了MyBatis的運(yùn)行環(huán)境等信息。
mapper,xml:sql的映射文件,配置了操作數(shù)據(jù)庫的sql語句,此文件需在config.xml中加載。

SqlSessionFactory:通過MyBatis環(huán)境等配置信息構(gòu)造SqlSessionFactory(會話工廠)。
SqlSession:通過會話工廠創(chuàng)建SqlSession(會話),對數(shù)據(jù)庫進(jìn)行增刪改查操作。
Exector執(zhí)行器:MyBatis底層自定義了Exector執(zhí)行器接口來具體操作數(shù)據(jù)庫,Exector接口有兩個實(shí)現(xiàn),一個基本執(zhí)行器(默認(rèn)),一個是緩存執(zhí)行器,SqlSession底層是通過Exector接口操作數(shù)據(jù)庫。
MappedStatement:MyBatis的一個底層封裝對象,它包裝了MyBatis配置信息與sql映射信息等。mapper.xml中的insert/select/update/delete標(biāo)簽對應(yīng)一個MappedStatement對象。標(biāo)簽的id就是MappedStatement的id。
MappedStatement對sql執(zhí)行輸入?yún)?shù)進(jìn)行定義,包括HashMap、基本類型、pojo、Executor通過MappedStatement在執(zhí)行sql前將輸入的Java對象映射至sql中,輸入?yún)?shù)映射就是JDBC編程對preparedStatement設(shè)置參數(shù)。
MappedStatement對sql執(zhí)行輸出結(jié)果進(jìn)行定義,包括HashMap、基本類型、pojo,Executor通過MappedStatement在執(zhí)行sql后將輸出結(jié)果映射至Java對象中,輸出結(jié)果映射就是JDBC編程對結(jié)果的解析處理過程。
調(diào)用流程圖

Mapper代理執(zhí)行原理
Mapper代理開發(fā)方式使用的是JDK的動態(tài)代理(針對有接口的類進(jìn)行動態(tài)代理)。

往期資源:
2019最新Python視頻:從入門到Swiper項(xiàng)目實(shí)戰(zhàn)
2019重磅高級資源:Java并發(fā)編程原理和實(shí)戰(zhàn)
最新黑馬大數(shù)據(jù)資源:深入解析docker容器化技術(shù)
最新Java后端實(shí)戰(zhàn)視頻:SSM框架在線商城系統(tǒng)
2019最新黑客技術(shù)之Windows網(wǎng)絡(luò)安全精講
