PageHelper简单应用对分页查询功能实现的的简化(SpringBoot项目)
关于PageHelper
Pagehelper是Mybatis中的一个极为常用的用于简化分页查询的一个插件,其核心作用是为SQL自动添加分页逻辑,避免手写分页流程,大大简化开发。
在原始的分页查询实现中,需要在mapper层进行sql编写需要手写分页sql、数据记录数统计sql以及计算分页查询起始索引,十分繁琐,开发效率低。而直接使用pageHelper插件后,仅需向插件方法传入分页查询参数即可实现。
PageHelper的实现原理
在调用PageHelper.startPage()方法时,会将传入方法的分页参数放在ThreadLocal当中储存起来,然后Mybatis的拦截器会拦截sql语句的执行,并进行三步操作,首先读取ThreadLocal中的分页参数,然后自动对原sql添加分页语法,并额外执行一句count(*)来获取总记录数,最后会将查询结果封装为Page
PageHelper的使用步骤
1、引入PageHelper依赖
2、开启分页,想PageHeler.pageStart()方法传入参数,并调用mapper中的查询方法(此时无需考虑分页逻辑,因为pagehelper已自动实现),在service层对查询后的结果进行封装(具体过程为将mapper查询结果强转为Page
注意事项:
1、startPage必须紧跟第一个查询:仅对startPage后的第一个Mybatis查询有效,中间不能插入其他代码
2、多线程跟异步场景中要及时清理上下文:使用后应调用PageHelper.Clearpage()来清理ThreadLocal中地参数,避免污染后续查询
3、复杂的COUNT(*)问题:多表联查时产生的COUNT可能不准确,建议手写COUNT()的Sql

浙公网安备 33010602011771号