Mybatis中dao接口和mapper 的加載過程


這里考慮的是mybatis和spring整合的場景

1.在系統啟動的時候,會去執行配置文件中有關掃描mybatis接口的配置:通過MapperScannerConfigurer掃描接口生成spring特定的描述交給MapperProxyFactory管理,可能以后要用它生成代理對象

2.初始化SqlSessionFactoryBean。

  首先判斷mybatis.xml中是否配置了mapper屬性,

    如果配置了:

      通過XMLConfigBuilder中的mapperElement()方法解析mapper接口放到configration中;

    如果沒有:

      再判斷是否配置mapperlocations路徑也就是mapper.xml所在的路徑

        如果配置了:

          會根據namespace找到接口,然后通過 XMLMapperBuilder中的bindMapperForNamespace()方法添加到configration中

        如果沒有配置:

          在需要用到mapper代理時,就會通過包掃描獲取mapper信息,解析mapper,然后放到configration中

3.configration添加mapper接口的過程

    通過mapper Registry 中的addMapper()方法

 

 

4.通過接口信息去加載對應的xml,同時會校驗對應xml配置是否正確。通過MapperAnnotationBuilder的parse()去判斷xml是否加載,如果沒有就調用其中額loadXMLResource()方法就行加載,同時將接口中的方法和sql通過id屬性就行關聯

5.最后通過jdk代理生成代理對象存到configration中,已被調用

 


免責聲明!

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



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