本文共 359 字,大约阅读时间需要 1 分钟。
首先基于,我们分析如下:

找到SqlSession的实现类DefaultSqlSession并找到它的getMapper方法:

继续进入Configuration类中找到它的getMapper方法:

继续进入mapperRegistry类中找到getMapper方法:

接着进入MapperProxyFactory类中找到newInstance方法:

这里可以看出使用了动态代理,newProxyInstance第一个参数为类加载器,第二个参数为实现接口,第三个参数为如何代理。
接下来进入MapperProxy看看是如何进行代理:

可以看出执行了execute:

接着我们进入executeForMany:

通过上面分析可以看出Mybatis帮我们做了一系列工作,所以我们可以不用实现dao接口。
可以结合这篇文章看
转载地址:http://wuchz.baihongyu.com/