Mybatis Plus動態代理源碼分析


以下以調用baseMapper的selectById為例,剖析Mybatis plus的執行邏輯。

總體來看,Mybatis plus通過兩層JDK動態代理的方式,實現了SQL的執行。

第一層動態代理為:MybatisMapperProxy,內部獲取到了SqlSessionInterceptor;

第二層動態代理為:SqlSessionInterceptor,內部真正的創建了SqlSession來執行SQL並返回。

 

1、主入口:

此時會通過JdkDynamicAopProxy通過反射的方式,調用MybatisMapperProxy,此類為所有Mybatis plus SQL執行的主入口。

 

2、MybatisMapperProxy為JDK動態代理,調用MybatisMapperMethod方法的execute方法。

 

3、MybatisMapperMethod的execute執行邏輯為,調用SqlSessionTemplate的selectOne方法,其內部通過調用sqlSessionProxy來代理執行selectOne方法。 代理類為SqlSessionInterceptor。

 

4、代理類的執行邏輯為:通過SqlSessionFactory創建SqlSession(DefaultSqlSession),然后調用對應的selectOne方法,最后commit SqlSession並返回執行結果。

 


免責聲明!

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



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