前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis使用代理dao的执行过程 findAll流程分析

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

原创
作者头像
韦恩少爷的背
修改2020-02-20 18:46:33
5680
修改2020-02-20 18:46:33
举报
文章被收录于专栏:SSM框架学习

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

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

在这里插入图片描述
在这里插入图片描述

我们现在只关心创建代理对象 也就是getMapper这个方法

跟进去 并且按住ctrl+shift+H 进入DefaultSqlSession

在这里插入图片描述
在这里插入图片描述

找到对应的方法

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

继续

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

动态代理方法分析

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

成功找到SelectList

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

总结

为什么mybatis能不写dao呢,其实就是它在给我们想办法调用我们自己写dao的那些方法。 它能给我们调用,我们就可以不用去写dao了

起飞 芜湖~~~

(点个赞秋梨膏)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mybatis使用代理dao的执行过程 findAll流程分析
    • 动态代理方法分析
      • 成功找到SelectList
        • 总结
          • 起飞 芜湖~~~
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档