MyBatis封裝JDBC具體實現


  關於xml等解析的工具基本均包含在org.apache.ibatis.builder包中,有包名可知基本使用建造者模式。這個包的主要功能兩個:
  1、解析XML配置文件和映射文件,xml子包中;
  2、解析注解形式的mapper聲明,這部分功能在annotation中。
  暫時僅分析xml配置文件方式的技術實現。
關於builder包中關於xml實現的UML圖如下:

 

   測試案例代碼如下:

  調試代碼,跟蹤xml解析過程及解析結果的保存:

  一、代理對象的解析保存

  1、

 

 

   2、

  

 

   3、

  

  4、

  

   5、

  

   6、

  

   7、

  

   8、

  

   二、MappedStatement解析保存(xxxmapper.xml解析)

  1、

  

 

   2、

   

 

   3、

  

 

   4、

  

 

   5、

  

 

   6、

  

   三、數據源相關解析保存(datasource)

  1、

  

 

   2、

  3、

  

 

   以上將配置文件中數據源、sql及相應mapper的代理對象均保存在Configuration的屬性中,分別是MappedStatement、environment、MappedRegistry。以上三個屬性保證了對於數據庫的操作的基本功能,剩下的就是對數據的實際操作了。剩下的工作誰做呢?Executor。

  

 

  Executor在sqlsession生成的過程中作為其屬性之一生成,具體如下:

   關於執行器具體可參考https://www.cnblogs.com/ilovebath/p/14510697.html

  那么這幾個分離的過程,怎么執行關聯一起執行數據庫的操作的呢?客戶端獲取mapper代理對象(https://www.cnblogs.com/ilovebath/p/14511932.html)后,執行invoke方法。invoke方法中使用executor執行鏈接數據庫、執行sql語句並返回結果映射。核心方法如下:

  

 

   

 

   其中可以驗證:1、獲取數據庫鏈接

         2、預處理sql語句

         3、參數化處理

   

 

 

 

 

 

 

 

 

 

 

 

   

 

  

  

 

    

 


免責聲明!

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



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