Mybatis传统实现Dao查询所有的执行过程分析

(1)点击测试案例进入到UserDaoImpl 的 findAll 方法内
在这里插入图片描述
(2)进入findAll方法,发现这里的sqlSession 实际上是一个 DefaultSQLSession对象,而DefaultSqlSession 实际是SqlSession 接口的一个实现类(就如同自定义Mybatis
的过程调用顺序一样)
在这里插入图片描述
(3)选中SqlSession,Ctrl+Alt+B 找到实现类 DefaultSqlSession,跟入进去
在这里插入图片描述
(3)发现最后跳转的这个 executor.query,又是一个接口,而且跳转的是这个接口的 CachingExecutor 实现类
在这里插入图片描述
(4)同样的方法,选中这个接口,进入它的实现类
在这里插入图片描述
发现它又走了个query方法,继续通过断点调试进入这个query方法
在这里插入图片描述
发现这里最后又跳转到了Executor接口的实现类SimpleExecutor 中,同样进入这个是实现类
在这里插入图片描述
(5)进入SimpleExecutor,发现并没有query方法,但是发现该类继承了BaseExecutor抽象类
在这里插入图片描述
这个抽象类中含有query方法,
在这里插入图片描述
该query方法又跳到了queryFromDatabase 中
在这里插入图片描述
该方法又调用了doQuery 方法
在这里插入图片描述
由于该类是个抽象类,doQuery 是个抽象方法,所以就跳入到了 SimpleExecutor 内的doQuery 方法,又跳到了RoutingStatementHandler 方法内
在这里插入图片描述
(6)继续步入:RoutingStatementHandler
在这里插入图片描述
(7)步入PrepareStatementHandler
在这里插入图片描述可以看到此处的PrepareStatement 即是我们知道的 JDBC 操作类,到这则会具体执行SQL代码操作
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值