这里举例是想查找到SelectList方法这样就和上一P讲的后面是一样的了 如何找到呢?不同于使用dao实现类的执行流程是什么呢? 一步步来看

我们现在只关心创建代理对象 也就是getMapper这个方法
跟进去 并且按住ctrl+shift+H 进入DefaultSqlSession

找到对应的方法

也没有创建代理对象的操作,所以我们再跟进去

继续

跟进去,再跟发现两个方法是挨着的

发现这不就是动态代理吗????(虽然说我第一时间也没反应过来 单独拿出来分析

三个参数分别为:类加载器 实现了接口 如何代理 我们关注的点就是如何代理 我们跟进去,也就是MapperProxy类


(我代理没怎么学,大家应该比我清楚) 由于实现了InvocationHandler的接口 执行被代理对象的任何方法都会经过这个方法,并且做了mapperMethod.execute 继续跟进去

到了这里就很明白了,举例说明findAll方法,我们进入executeForMany

这里还是附上一张网课老师画的流程图 更清晰点

为什么mybatis能不写dao呢,其实就是它在给我们想办法调用我们自己写dao的那些方法。 它能给我们调用,我们就可以不用去写dao了
(点个赞秋梨膏)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。