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
    评论
MyBatisDao层是指在使用MyBatis框架时,用于进行数据库操作的接口。它通过动态代理的方式,根据接口方法的名称和参数来生成对应的SQL语句,并将结果映射为Java对象返回给调用方。 在MyBatis中,可以有两种方式来实现Dao层: 1. 传统开发方式:使用XML文件配置SQL语句和映射关系,然后通过手动编写Java代码来调用SQL语句执行数据库操作。这种方式需要编写大量的冗余代码,不够简洁高效。 2. 代理开发方式:使用动态代理的思想,根据接口定义自动生成Dao接口的实现类。在运行时,通过调用Dao接口的方法来执行相应的SQL语句。这种方式能够大大简化开发流程,减少了冗余代码的编写量,提高了开发效率。通过动态代理,MyBatis可以自动帮我们完成SQL语句的拼装和执行,使开发者只需要关注业务逻辑,而不需要处理底层的数据库访问细节。 综上所述,MyBatisDao层是通过动态代理方式实现的,它提供了一种简洁高效的方式来进行数据库操作,使开发者能够更加专注于业务逻辑的编写。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【MybatisMybatis介绍和Dao实现](https://blog.csdn.net/weixin_52847234/article/details/125961146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【SSM】05-Mybatisdao的使用](https://blog.csdn.net/m0_50964976/article/details/122093433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南淮北安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值