MyBatis的DAO接口跟XML文件里面的SQL是如何建立關系的?


     MyBatis的應用都是以一個SqlSessionFactory的實例為中心的,SqlSessionFactory的實例可以通過SqlSessionFactoryBuilder來獲得。

但SqlSessionFactory是一個接口,它的里面其實就有兩個方法:OpenSession、getConfiguration;其中,Opensession方法就是為了獲取一個SqlSession對象

,完成必要數據庫的增刪改查功能,但是SqlsessionFactory屬性太少了,所以需要getConfiguration的配合;來配置mapper映射文件、SQL參數、返回值類型、緩存等屬性。

 

MyBatis在初始化SqlSessionFactoryBean的時候,找到配置需要掃描的基本包路徑,去解析里面所有的XML。重點就在如下兩個地方:

   1、創建SqlSource

    Mybatis會把每個SQL標簽封裝成SqlSource對象。然后根據SQL語句的不同,分為動態SQL和靜態SQL。其中靜態SQL包含一段String類型的SQL語句;而動態SQL                由一個SqlNode組成

    

 

   2、創建MapperedStatement

    XML中的每一個SQL標簽就對應一個MapperedStatement對象,這里有兩個屬性很重要

    Id       全限定類名+方法組成的ID。

    sqlSource  當前SQL標簽對應的SqlSource對象。創建完MapperedStatement對象,會將它緩存到Configuration#MapperedStatement中。

    

 

    由圖所示,當我們執行MyBatis方法的時候 就通過 全限定類名+方法名 找到MapperedStatement 對象,然后執行里面的sql內容,執行即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM