这里举例是想查找到SelectList方法这样就和上一P讲的后面是一样的了 如何找到呢?不同于使用dao实现类的执行流程是什么呢? 一步步来看
我们现在只关心创建代理对象 也就是getMapper这个方法
跟进去 并且按住ctrl+shift+H 进入DefaultSqlSession
找到对应的方法
也没有创建代理对象的操作,所以我们再跟进去
继续
跟进去,再跟发现两个方法是挨着的
发现这不就是动态代理吗????(虽然说我第一时间也没反应过来 单独拿出来分析
三个参数分别为:类加载器 实现了接口 如何代理 我们关注的点就是如何代理 我们跟进去,也就是MapperProxy类
(我代理没怎么学,大家应该比我清楚) 由于实现了InvocationHandler的接口 执行被代理对象的任何方法都会经过这个方法,并且做了mapperMethod.execute 继续跟进去
到了这里就很明白了,举例说明findAll方法,我们进入executeForMany
这里还是附上一张网课老师画的流程图 更清晰点
为什么mybatis能不写dao呢,其实就是它在给我们想办法调用我们自己写dao的那些方法。 它能给我们调用,我们就可以不用去写dao了
(点个赞秋梨膏)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。