实现Mybatis拦截器

身为一个没发过任何博客的小白女程序员,要开始写博客啦!
最近在做公司项目时,Client端做资源缓存时候需要根据Server端的数据库表是否更新来刷新,因此在Server端如果某个表内容发生改变,那么这个表的版本号需要+1。需要监控的业务核心表不多,因此采用了通过实现Mybatis拦截器获取sql内容来实现对表版本的更新,更新的版本号存储位置可根据业务场景来决定,redis或者数据库等等。
因为是如果表内容更新,所以本次业务需要拦截的是insert\update\delete三种情况。
项目是SpringBoot的,下面来简单说下大体流程~~
1、自定义拦截器类实现 org.apache.ibatis.plugin.Interceptor接口
@Intercepts注解需要一个Signature(拦截点)参数数组,来指定拦截哪个对象里面的哪个方法。
Mybatis中所有的Mapper语句的执行都是通过Executor进行的。Executor是Mybatis的核心接口。在其定义的接口方法可以看出,对应的增删改语句是通过Executor接口的update方法进行的,因此这里选择方法update。
业务操作写在intercept方法里,但需注意如果执行过程中出现异常不能影响主流程。
拿到sql后,可拿到sql的执行操作类型、参数值等,如果需要获取sql中的表名称,则其可通过引入jsqlparser包写个工具类得到

@Intercepts({
@Signature(type = Executor.class, method = “update”, args = {Mappe

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值