教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

MyBatis的執(zhí)行原理詳細(xì)介紹

更新時(shí)間:2021年09月17日15時(shí)18分 來(lái)源:傳智教育 瀏覽次數(shù):

為了使大家能夠更加清晰的理解MyBatis程序,在正式講解MyBatis入門案例之前,先來(lái)了解一下MyBatis程序的工作原理,如圖1所示。

MyBatis的工作原理

圖1 MyBatis框架執(zhí)行流程圖

從圖1可以看出,MyBatis框架在操作數(shù)據(jù)庫(kù)時(shí),大體經(jīng)過(guò)了8個(gè)步驟。下面就對(duì)圖1中的每一步流程進(jìn)行詳細(xì)講解,具體如下。


(1)讀取MyBatis配置文件mybatis-config.xml。mybatis-config.xml作為MyBatis的全局配置文件,配置了MyBatis的運(yùn)行環(huán)境等信息,其中主要內(nèi)容是獲取數(shù)據(jù)庫(kù)連接。


(2)加載映射文件Mapper.xml。Mapper.xml文件即SQL映射文件,該文件中配置了操作數(shù)據(jù)庫(kù)的SQL語(yǔ)句,需要在mybatis-config.xml中加載才能執(zhí)行。mybatis-config.xml可以加載多個(gè)配置文件,每個(gè)配置文件對(duì)應(yīng)數(shù)據(jù)庫(kù)中的一張表。


(3)構(gòu)建會(huì)話工廠。通過(guò)MyBatis的環(huán)境等配置信息構(gòu)建會(huì)話工廠SqlSessionFactory。


(4)創(chuàng)建SqlSession對(duì)象。由會(huì)話工廠創(chuàng)建SqlSession對(duì)象,該對(duì)象中包含了執(zhí)行SQL的所有方法。


(5)MyBatis底層定義了一個(gè)Executor接口來(lái)操作數(shù)據(jù)庫(kù),它會(huì)根據(jù)SqlSession傳遞的參數(shù)動(dòng)態(tài)的生成需要執(zhí)行的SQL語(yǔ)句,同時(shí)負(fù)責(zé)查詢緩存的維護(hù)。


(6)在Executor接口的執(zhí)行方法中,包含一個(gè)MappedStatement類型的參數(shù),該參數(shù)是對(duì)映射信息的封裝,用來(lái)存儲(chǔ)要映射的SQL語(yǔ)句的id、參數(shù)等。Mapper.xml文件中一個(gè)SQL對(duì)應(yīng)一個(gè)MappedStatement對(duì)象,SQL的id即是MappedStatement的id。


(7)輸入?yún)?shù)映射。在執(zhí)行方法時(shí),MappedStatement對(duì)象會(huì)對(duì)用戶執(zhí)行SQL語(yǔ)句的輸入?yún)?shù)進(jìn)行定義(可以定義為Map、List類型、基本類型和POJO類型),Executor執(zhí)行器會(huì)通過(guò)MappedStatement對(duì)象在執(zhí)行SQL前,將輸入的Java對(duì)象映射到SQL語(yǔ)句中。這里對(duì)輸入?yún)?shù)的映射過(guò)程就類似于JDBC編程中對(duì)preparedStatement對(duì)象設(shè)置參數(shù)的過(guò)程。


(8)輸出結(jié)果映射。在數(shù)據(jù)庫(kù)中執(zhí)行完SQL語(yǔ)句后,MappedStatement對(duì)象會(huì)對(duì)SQL執(zhí)行輸出的結(jié)果進(jìn)行定義(可以定義為Map和List類型、基本類型、POJO類型),Executor執(zhí)行器會(huì)通過(guò)MappedStatement對(duì)象在執(zhí)行SQL語(yǔ)句后,將輸出結(jié)果映射至Java對(duì)象中。這種將輸出結(jié)果映射到Java對(duì)象的過(guò)程就類似于JDBC編程中對(duì)結(jié)果的解析處理過(guò)程。

通過(guò)上面對(duì)MyBatis框架執(zhí)行流程的講解,相信讀者對(duì)MyBatis框架已經(jīng)有了一個(gè)初步的了解。對(duì)于初學(xué)者來(lái)說(shuō),上面所講解的內(nèi)容可能不會(huì)完全理解,現(xiàn)階段也不要求讀者能完全理解,這里講解MyBatis框架的執(zhí)行過(guò)程是為了方便后面程序的學(xué)習(xí)。在學(xué)習(xí)完MyBatis框架后,讀者自然就會(huì)明白上面所講解的內(nèi)容了。

好口碑IT培訓(xùn)



猜你喜歡:

什么是Mybatis?Mybaits有哪些優(yōu)點(diǎn)?

MyBatis怎樣處理一對(duì)一關(guān)聯(lián)關(guān)系?分步驟介紹

什么是Mybatis?Mybaits有哪些優(yōu)點(diǎn)?

Mybatis原理介紹:MyBatis如何操作數(shù)據(jù)庫(kù)?

Mybatis中的#{}和${}的區(qū)別是什么?

傳智教育Java開(kāi)發(fā)課程

0 分享到:
和我們?cè)诰€交談!