首頁技術(shù)文章正文

Mybatis操作數(shù)據(jù)庫執(zhí)行流程的先后順序是怎樣的?

更新時(shí)間:2023-05-12 來源:黑馬程序員 瀏覽量:

MyBatis是一個(gè)支持普通SQL查詢、存儲及高級映射的持久層框架,它幾乎消除了JDBC的冗余代碼。使Java開發(fā)人員可以使用面向?qū)ο蟮木幊趟枷雭聿僮鲾?shù)據(jù)庫。對于MyBatis的工作原理和操作流程的理解,我們先來看下面的工作流程圖。
1683878187556_數(shù)據(jù)庫.png

MaBatis的工作流程

在上圖中,MyBatis操作數(shù)據(jù)庫的流程分為8個(gè)步驟,具體介紹如下。

(1)MyBatis讀取核心配置文件mybatis-config.xml

mybatis-configxml核心配置文件主要配置了MyBatis的運(yùn)行環(huán)境等信息。

(2)加載映射文件Mapperxml

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

(3)構(gòu)造會話工廠

通過MyBatis的環(huán)城h配置信息構(gòu)建會話工廠SqlSessionFactory,用于創(chuàng)建SqlSession。

(4)創(chuàng)建會話對象

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

(5)創(chuàng)建執(zhí)行器

會話對象本身不能直接操作數(shù)據(jù)庫,MyBanis底層定義了一個(gè)Executor接口用于操作數(shù)據(jù)庫,執(zhí)行器會根據(jù)SqlSessinn傳遞的參數(shù)動態(tài)的生成需要執(zhí)行的SQL.語句,同時(shí)負(fù)責(zé)查詢緩存地維護(hù)

(6)封裝SQL信息

SqlSession 內(nèi)部通過執(zhí)行器Executor 操作數(shù)據(jù)庫,執(zhí)行器將待處理的SQL.信息封裝到MappelStatement對象中,MappedlStatement對象中存儲了要映射的SQL.語句的id、參數(shù)等。Mappetxml文件中一個(gè)SQL語句對應(yīng)一個(gè)MappedStatement 對象,SQL語句的id即是MappedStatement 的id。Eveeator 執(zhí)行器會在執(zhí)行SQL語句之前,通過MappelStatement對象將輸人的參數(shù)映射到SQL.語句中。

(7)操作數(shù)據(jù)庫

根據(jù)動態(tài)生成的SQL操作數(shù)據(jù)庫。

(8)輸出結(jié)果映射

執(zhí)行SQL.語句之后,通過MappedStatement對象將輸出結(jié)果映射至Java對象中。通過上面對MyBatis框架工作原理的講解,相信讀者對MyBatis框架已經(jīng)有了一個(gè)初步的了解。

分享到:

Java培訓(xùn)班課程javaee

Python培訓(xùn)機(jī)構(gòu)python大數(shù)據(jù)

web前端培訓(xùn)課程升級V8.5web

AI+設(shè)計(jì)培訓(xùn)課程ui

大數(shù)據(jù)培訓(xùn)課程cloud

軟件測試培訓(xùn)課程test

c

新媒體運(yùn)營培訓(xùn)netmarket

產(chǎn)品經(jīng)理培訓(xùn)課程pm

linux培訓(xùn)Linux

movies

智能機(jī)器人培訓(xùn)robot

電商視覺設(shè)計(jì)課程uids

AI

集成電路應(yīng)用開發(fā)(嵌入式)培訓(xùn)課程jdbc

在線咨詢 我要報(bào)名
和我們在線交談!