<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MyBatis的架構(gòu)原理

          共 1856字,需瀏覽 4分鐘

           ·

          2021-08-23 13:26

          相關(guān)閱讀

          300本計(jì)算機(jī)編程的經(jīng)典書(shū)籍下載

          AI全套:Python3+TensorFlow打造人臉識(shí)別智能小程序

          最新人工智能資料-Google工程師親授 Tensorflow-入門(mén)到進(jìn)階

          Java架構(gòu)全階段七期完整

          黑馬頭條項(xiàng)目 - Java Springboot2.0(視頻、資料、代碼和講義)14天完整版

          Spring核心編程思想

          作者:云羋山人
          鏈接: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)流程圖

          1. MyBatis配置文件

            • config.xml:配置了全局配置文件,配置了MyBatis的運(yùn)行環(huán)境等信息。

            • mapper,xml:sql的映射文件,配置了操作數(shù)據(jù)庫(kù)的sql語(yǔ)句,此文件需在config.xml中加載。

          2. SqlSessionFactory:通過(guò)MyBatis環(huán)境等配置信息構(gòu)造SqlSessionFactory(會(huì)話(huà)工廠(chǎng))。

          3. SqlSession:通過(guò)會(huì)話(huà)工廠(chǎng)創(chuàng)建SqlSession(會(huì)話(huà)),對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查操作。

          4. 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ù)。

          5. 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)代理)。

          看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人

          往期資源:


          Flutter 移動(dòng)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 視頻(開(kāi)發(fā)你自己的抖音APP)
          Java面試進(jìn)階訓(xùn)練營(yíng) 第2季(分布式篇)
          Java高級(jí) - 分布式系統(tǒng)開(kāi)發(fā)技術(shù)視頻


          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  又粗又长又大一级a片免费看 | 色中色AV | 靠逼免费看 | 一级片免费观看视频 | 黄片三级在线播放 |