MyBatis 源码分析笔记02 执行查询

MapperProxy

1.首先构建并且缓存MapperMethod,调用cachedMapperMethod: 先从缓存中获取,如果没有就新建一个mapperMethod,然后放入到缓存methodCache中。

2.构建好method后,就调用execute方法执行

3.执行类型分成insert,把参数转化成为sql命令的参数,执行插入insert,返回影响行数的结果

4.update,delete的执行同理

5.select的执行比较复杂,如下图

 5.1 执行查询返回void结果

 5.2 执行查询返回多个返回值

 5.3 执行查询返回map

 5.4 执行查询返回cursor游标

 5.5 执行查询返回单个返回值

6.具体执行开始,如下

7.将参数转换为sql命令的参数,调用sqlSession.select执行

8.继续调用执行

9.根据boundsql等入参,获取cacheKey,然后可以从缓存cache中直接获取查询结果list

9.根据参数paramObject,解析参数获取boundSql

10. 根据动态标签的不同,创建不同的sqlSource

11.替换每个占位符对应参数属性的映射

12.解析后的内容封装到boundSql对象中返回

13.调用BaseExecutor执行

14.调用SimpleExecutor执行

15.

实例化statement,设置超时时间等参数

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值