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

全國咨詢/投訴熱線:400-618-4000

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

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

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

MyBatis的工作原理

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

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


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


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


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


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


(5)MyBatis底層定義了一個Executor接口來操作數(shù)據(jù)庫,它會根據(jù)SqlSession傳遞的參數(shù)動態(tài)的生成需要執(zhí)行的SQL語句,同時負責查詢緩存的維護。


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


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


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

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

好口碑IT培訓



猜你喜歡:

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

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

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

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

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

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

0 分享到:
和我們在線交談!