Spring Boot后端分页查询及PageHelper插件

对于大量数据的查询来说,分页查询是一个常见的需求场景。一般来说,前端传递给后端程序的参数包括当前页码和每页展示的记录数目。而后端需要传递给前端的数据经常包括该页包含的查询结果和总记录数。

spring boot的web后端项目中,一般使用java bean实体类来存储在不同组件之间传递的数据,分页查询结果可以定义一个实体类来包含查询结果。

@Data  // lombok注解
public class PageBean {
    private Long total;  // 总记录数
    private List rows;  // 查询结果
}

显然,为了完成这个需求,mapper层需要定义两个方法分别获取这两个结果,在service层中组装成一个bean对象。

注意这个需求中通常页码和页大小通常存在一个默认值(比如默认展示第一页,每页展示10条数据)。框架提供的@RequestParam注解可以通过设置defaultValue参数值来设置默认值。

由于这种分页查询的需求在各种后端系统中非常常见且类似,mybatsi提供了针对这种需求的插件PageHelper。首先需要在maven中引入该插件的依赖,具体可以上网搜索。使用这个插件,编写分页查询可以简化为下面几步:

  1. mapper层只编写一个最基本的查询语句。
@Select("select * from emp")
public List<Emp> list();
  1. service层的方法中设置分页参数。
  2. 将mapper方法返回值转换为Page对象。该类是插件定义的。
  3. 使用Page对象的成员来获取查询结果。
PageHelper.startPage(page, pageSize);

List<Emp> empList = empMapper.list();
Page<Emp> p = (Page<Emp>) empList;

PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
// ...
posted @ 2025-02-07 23:34  随机生成一个id  阅读(137)  评论(0)    收藏  举报