Mybatis工作流程

Mybatis是目前非常流行的ORM(Object Relational Mapping)框架,本文主要簡單梳理一下Mybatis的工作流程。

1.加載配置文件

Mybatis的配置文件一共有兩類:

  • 一類是用于指定數(shù)據(jù)源,事務(wù)屬性以及其他一些參數(shù)配置信息的全局配置文件
  • 另一類是用于指定數(shù)據(jù)庫表和程序之間的映射文件

加載到內(nèi)存中會生成一個(gè)對應(yīng)的MappedStatement對象,然后會以key="selectId" ,value為MappedStatement對象的形式維護(hù)到Configuration的一個(gè)Map中。當(dāng)以后需要使用的時(shí)候,只需要通過Id值來獲取就可以了。

2.產(chǎn)生sqlSession

根據(jù)配置文件創(chuàng)建SQLSessionFactory,再由工廠產(chǎn)生sqlSession,SqlSession根據(jù)Statement ID, 在mybatis配置對象Configuration中獲取到對應(yīng)的MappedStatement對象,然后調(diào)用mybatis執(zhí)行器來執(zhí)行具體的操作。使用Mapper方式操作sql,利用的是動(dòng)態(tài)代理,不用實(shí)現(xiàn)mapper接口,通過接口中的方法名來查找到對應(yīng)的方法名

3.MyBatis執(zhí)行器Executor根據(jù)SqlSession傳遞的參數(shù)執(zhí)行query()方法

Executor.query()方法幾經(jīng)轉(zhuǎn)折,最后會創(chuàng)建一個(gè)StatementHandler對象,然后將必要的參數(shù)傳遞給StatementHandler,使用StatementHandler來完成對數(shù)據(jù)庫的查詢,最終返回List結(jié)果集。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在美國有這樣一位牛人叫Elon Musk。他創(chuàng)辦了互聯(lián)網(wǎng)公司zip2,接著創(chuàng)辦了PayPal(貝寶),創(chuàng)辦了特斯拉...
    Hi祥閱讀 2,137評論 0 5
  • 《 一生所愛》從前現(xiàn)在過去了再不來紅紅落葉長埋塵土內(nèi)開始終結(jié)總是沒變改天邊的你飄泊白云外苦海翻起愛恨在世間難逃避命...
    莫那一魯?shù)?/span>閱讀 2,477評論 8 8
  • “閱讀和旅行是成長的最大能源。成長要深,也要廣,閱讀讓你深,旅行使你廣。讀萬卷書,不行萬里路,如井中觀天,眼界有限...
    若水柳柳柳閱讀 437評論 0 0
  • 請你遠(yuǎn)離我 要么就 貼近心臟、擒住幾個(gè) 糾纏不清的思想 藍(lán) 是你、還是誰? 坐在海床上 看白閃閃的塑料袋向太陽蕩去...
    月亮上班了閱讀 159評論 0 0
  • android7.0已經(jīng)出來有一段時(shí)間,確切的說是7.1已經(jīng)出來有些時(shí)間了,我們開始把7.0的適配提上了日程,適配...
    ztzt123閱讀 646評論 0 0

友情鏈接更多精彩內(nèi)容