mybatis中的动态代理实现它的Plugin功能

Executor代理对象的创建:

我们需要知道是谁去执行我们的sql操作的:在这里插入图片描述
为什么要从selectList的后续开始找,因为我们的mybatis有一种写法是这样的在这里插入图片描述
直接调用这个方法即可:在这里插入图片描述
所以我们直接从selectList开始走,知道是Executor对象过后 我们去看它是如何创建代理的:
1.executor是在openSession方法中创建的:
在这里插入图片描述
2.创建executor对象:在这里插入图片描述
3.进入插件的功能中:在这里插入图片描述
4.遍历所有的对象给我们的插件添加功能
在这里插入图片描述
在这里插入图片描述
5.代理对象的从创建

在这里插入图片描述
6.继续创建代理 , 我们看到这里的代理是嵌套的代理对象 本质上都是同一个对象 它一直被嵌套创建代理
在这里插入图片描述
其实我们的有很多对象在创建的时候都有添加插件功能 不只是executor,比如mybatis里面的statementHandler也实现了这个功能,其他的自己找把。
在这里插入图片描述

插件拦截的使用:

其他的我们就不看了 直接看executor调用query的时候执行的代理的方法:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值