通过 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 初始化时解析才能在项目启动时添加到插件容器中
由一个 List 结构存储项目中全部拦截器, 通过 Configuration#addInterceptor 方法添加
重点需要关注 Interceptor#pluginAll 中 plugin 方法, Interceptor 只是一个接口, plugin 方法只能由其实现类完成
Plugin 可以理解为是一个工具类, Plugin#wrap 返回的是一个动态代理类
这里使用一个测试的 Demo 看一下方法运行时的参数
虽然是随便写的 Demo, 但是与正式使用的插件并无实际区别