JDK 动态代理和MyBatis 用到的JDK 动态代理有什么区别?
生活随笔
收集整理的這篇文章主要介紹了
JDK 动态代理和MyBatis 用到的JDK 动态代理有什么区别?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JDK 動態(tài)代理:JDK 動態(tài)代理代理,在實現(xiàn)了InvocationHandler 的代理類里面,需要傳入一個被代理對象的實現(xiàn)類。
MyBatis 的動態(tài)代理:不需要實現(xiàn)類的原因:我們只需要根據(jù)接口類型+方法的名稱,就可以找到Statement ID 了,而唯一要做的一件事情也是這件,所以不需要實現(xiàn)類。在MapperProxy里面直接執(zhí)行邏輯(也就是執(zhí)行SQL)就可以。
總結(jié):
獲得Mapper 對象的過程,實質(zhì)上是獲取了一個MapperProxy 的代理對象。
MapperProxy 中有sqlSession、mapperInterface、methodCache。
先記下這個問題:在代理類中為什么要持有一個SqlSession?
?
總結(jié)
以上是生活随笔為你收集整理的JDK 动态代理和MyBatis 用到的JDK 动态代理有什么区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis 源码解读-获得Mappe
- 下一篇: BaseExecutor.query()