一、传统分页查询
要想从数据库中进行分页查询,我们要使用
LIMIT
关键字,格式为:limit 开始索引 每页显示的条数
- 查询第1页数据的SQL语句是:
select * from emp limit 0,10;
- 查询第2页数据的SQL语句是:
select * from emp limit 10,10;
- 查询第3页的数据的SQL语句是:
select * from emp limit 20,10;
观察以上SQL语句,发现: 开始索引一直在改变 , 每页显示条数是固定的
开始索引的计算公式: 开始索引 = (当前页码 - 1) * 每页显示条数
后台给前端返回的数据包含:List集合(数据列表)、total(总记录数)
而这两部分我们通常封装到PageBean对象中,并将该对象转换为json格式的数据响应回给浏览器。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {private Long total; //总记录数private List rows; //当前页数据列表
}
//条件分页查询@GetMappingpublic Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize) {//记录日志log.info("分页查询,参数:{},{}", page, pageSize);//调用业务层分页查询功能PageBean pageBean = empService.page(page, pageSize);//响应return Result.success(pageBean);}
二、分页插件
2.1 pagehelper和pagehelper-spring-boot-starter区别
pagehelper:需要主动添加拦截器 (SSM项目推荐) ,添加拦截器之后才自动添加limit
pagehelper-spring-boot-starter:不需要主动添加拦截器,SpringBoot会主动帮我们添加拦截器 (SpringBoot项目推荐)
2.2依赖区别
SSM推荐,别忘了添加拦截器
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.0</version>
</dependency>
SpringBoot推荐,不需注定添加拦截器
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.2</version>
</dependency>
2.3使用
返回的信息: