1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MyBatis的架構(gòu)原理

        共 1856字,需瀏覽 4分鐘

         ·

        2021-08-23 13:26

        相關(guān)閱讀

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

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

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

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

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

        Spring核心編程思想

        作者:云羋山人
        鏈接:https://www.jianshu.com/p/102e8736dae2

        MyBatis架構(gòu)圖

        接口層

        是MyBatis提供給開發(fā)人員的一套API,只要使用SqlSession接口,通過SqlSession接口和Mapper接口,開發(fā)人員可以通知MyBatis框架調(diào)用哪一條SQL命令以及SQL命令關(guān)聯(lián)參數(shù)。

        數(shù)據(jù)處理層

        是MyBatis框架內(nèi)部的核心實(shí)現(xiàn),來完成對映射文件的解析與數(shù)據(jù)處理。

        • 參數(shù)解析與參數(shù)綁定

        • SQL解析

        • 結(jié)果集映射解析與結(jié)果集映射處理

        支撐層

        用來完成MyBatis與數(shù)據(jù)庫基本連接方式以及SQL命令與配置文件對應(yīng),主要負(fù)責(zé):

        • MyBatis與數(shù)據(jù)庫連接方式管理

        • MyBatis對事務(wù)管理方式

        • 配置文件加載

        • MyBatis查詢緩存管理

        架構(gòu)流程圖

        1. MyBatis配置文件

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

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

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

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

        4. Exector執(zhí)行器:MyBatis底層自定義了Exector執(zhí)行器接口來具體操作數(shù)據(jù)庫,Exector接口有兩個實(shí)現(xiàn),一個基本執(zhí)行器(默認(rèn)),一個是緩存執(zhí)行器,SqlSession底層是通過Exector接口操作數(shù)據(jù)庫。

        5. MappedStatement:MyBatis的一個底層封裝對象,它包裝了MyBatis配置信息與sql映射信息等。mapper.xml中的insert/select/update/delete標(biāo)簽對應(yīng)一個MappedStatement對象。標(biāo)簽的id就是MappedStatement的id。

          • MappedStatement對sql執(zhí)行輸入?yún)?shù)進(jìn)行定義,包括HashMap、基本類型、pojo、Executor通過MappedStatement在執(zhí)行sql前將輸入的Java對象映射至sql中,輸入?yún)?shù)映射就是JDBC編程對preparedStatement設(shè)置參數(shù)。

          • MappedStatement對sql執(zhí)行輸出結(jié)果進(jìn)行定義,包括HashMap、基本類型、pojo,Executor通過MappedStatement在執(zhí)行sql后將輸出結(jié)果映射至Java對象中,輸出結(jié)果映射就是JDBC編程對結(jié)果的解析處理過程。

        調(diào)用流程圖

        Mapper代理執(zhí)行原理

        Mapper代理開發(fā)方式使用的是JDK的動態(tài)代理(針對有接口的類進(jìn)行動態(tài)代理)。

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

        往期資源:


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


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

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            手机在线观看av 豆花视频色 | 欧美色影视 | 黄色操逼视频免费观看 | 波多野结衣在线播放一区 | 处女被强行糟蹋bd | 欧美日韩精品另类 | 成人高清无码在线观看 | 人人摸在线视频 | 青青草熟女 | 人人操人人摸人人色 |