1. 程式人生 > 其它 >Mybatis Plus動態代理原始碼分析

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並返回執行結果。