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