实现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
    评论
Mybatis拦截器分页是指通过使用Mybatis拦截器机制来实现数据库查询结果的分页显示。拦截器的作用是在方法执行前后加入自定义的逻辑代码,从而实现方法拦截和处理。在Mybatis中,我们可以使用拦截器拦截Executor接口中的query方法,该方法用于执行数据库查询操作。通过拦截query方法,我们可以在查询前后进行一些处理,比如对查询结果进行分页处理。 在实现Mybatis拦截器分页的过程中,我们需要定义一个实现Interceptor接口的拦截器类,并在该类上使用@Intercepts注解来定义拦截点。在拦截器类中,我们可以通过重写intercept方法实现对query方法拦截和处理。在intercept方法中,我们可以获取到方法的参数和执行结果,并根据需要进行分页处理。 为了在Mybatis中使用拦截器分页,我们还需要在Mybatis的配置文件中注册拦截器。在配置文件中,我们可以使用<plugins>标签来注册拦截器,指定拦截器的类名。通过注册拦截器,我们可以使拦截器生效,并在查询操作中进行分页处理。 需要注意的是,不同的数据库可能有不同的分页语法,为了保证程序的兼容性,最好将数据库方言的设置抽出来。可以定义一个数据库方言配置接口,通过实现该接口来设置不同数据库的分页语法。在分页处理中,我们可以根据数据库方言来生成相应的分页SQL语句,从而实现对不同数据库的兼容性支持。 #### 引用[.reference_title] - *1* *2* *3* [MyBatis拦截器实现分页](https://blog.csdn.net/wqh8522/article/details/78972135)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值