当前位置: 代码迷 >> 综合 >> Mybatis 中理解分页如何使用 Interceptor 接口实现
  详细解决方案

Mybatis 中理解分页如何使用 Interceptor 接口实现

热度:23   发布时间:2023-11-24 20:09:18.0

在这里插入图片描述

通过 Mybatis 执行分页 SQL 有两种实现方式, 一种是编写 SQL 时添加 LIMIT, 一种是全局处理


01、SQL 分页

<select id="getSubjectByPage" resultMap="resultAutoMap">SELECT * FROM SUBJECT LIMIT #{CURRINDEX} , #{PAGESIZE}
</select>

02、拦截器分页

上文说到, Mybatis 支持了插件扩展机制, 可以拦截到具体对象的方法以及对应入参级别

我们添加插件时需要实现 Interceptor 接口, 然后将插件写在 mybatis-config.xml 配置文件中或者添加相关注解, Mybatis 初始化时解析才能在项目启动时添加到插件容器中

pluginElement

由一个 List 结构存储项目中全部拦截器, 通过 Configuration#addInterceptor 方法添加

InterceptorChain

重点需要关注 Interceptor#pluginAll 中 plugin 方法, Interceptor 只是一个接口, plugin 方法只能由其实现类完成

ExamplePlugin

Plugin 可以理解为是一个工具类, Plugin#wrap 返回的是一个动态代理类

wrap

这里使用一个测试的 Demo 看一下方法运行时的参数

AlwaysMapPlugin

虽然是随便写的 Demo, 但是与正式使用的插件并无实际区别

插件运行状态


微信搜索【源码兴趣圈】,关注龙台,回复【资料】领取涵盖 GO、Netty、SpringCLoud Alibaba、Seata、开发规范、面试宝典、数据结构等电子书 or 视频学习资料!

  相关解决方案