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

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

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

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

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

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