Mybatis中使用代理dao的执行过程分析

首先基于Mybatis的CRUD实现,我们分析如下:
Mybatis中使用代理dao的执行过程分析
找到SqlSession的实现类DefaultSqlSession并找到它的getMapper方法:
Mybatis中使用代理dao的执行过程分析
继续进入Configuration类中找到它的getMapper方法:
Mybatis中使用代理dao的执行过程分析
继续进入mapperRegistry类中找到getMapper方法:
Mybatis中使用代理dao的执行过程分析
接着进入MapperProxyFactory类中找到newInstance方法:
Mybatis中使用代理dao的执行过程分析
这里可以看出使用了动态代理,newProxyInstance第一个参数为类加载器,第二个参数为实现接口,第三个参数为如何代理。
接下来进入MapperProxy看看是如何进行代理:
Mybatis中使用代理dao的执行过程分析
可以看出执行了execute:
Mybatis中使用代理dao的执行过程分析
接着我们进入executeForMany:
Mybatis中使用代理dao的执行过程分析
通过上面分析可以看出Mybatis帮我们做了一系列工作,所以我们可以不用实现dao接口。
可以结合这篇文章看Mybatis中使用dao实现类的执行过程分析