分页
一、分页原理
- 页码:pageNum
pageNum从1开始,比如第1页、第2页......
- 每页显示的记录条数:pageSize
实际上每一次在进行分页请求发送的时候,都是要发送两个数据的:
- 页码pageNum要传给服务器
- 每页显示的记录条数pageSize也要传给服务器
假设每页显示3条数据:
第1页:limit 0, 3 (0,1,2)
第2页:limit 3, 3 (3,4,5)
第3页:limit 6, 3 (6,7,8)
第4页:limit 9, 3 (9,10,11)
......
即limit第一个参数startIndex = (pageNum - 1) * pageSize
假设每页显示pageSize条记录:
第pageNum页:limit (pageNum - 1) * pageSize, pageSize
二、Spring Boot中使用分页插件PageHelper
第一步:引入依赖
<!--Pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.3</version>
</dependency>
第二步:使用
使用PageHelper.startPage 静态方法调用startPage
:
特点:
- 静态方法,传递两个参数(当前页码pageNum,每页查询条数pageSize)
- 使用pageHelper 分页的时候,不再关注分页语句
- 查询全部的语句,自动的对PageHelper.startPage 方法下的第一个SQL查询进行分页
PageHelper.startPage(pageNum, pageSize);
// 后面一定是紧跟查询语句
// 把目录列表中所有的数据查询出来
List<Category> categoryList = categoryMapper.selectByExample(null);
service层代码
/**
* 分页查询目录列表
* @param pageNum 页码
* @param pageSize 页面大小
* @return
*/
@Override
public PageInfo selectCategoryByList(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
// 把目录列表中所有的数据查询出来
List<Category> categoryList = categoryMapper.selectByExample(null);
// 获取分页信息对象
PageInfo<Category> info = new PageInfo<>(categoryList, pageSize);
return info;
}
controller层
/**
* 商品分类列表(平铺)
* @param pageNum 页码
* @param pageSize 每页的大小
* @return
*/
@ApiOperation("商品分类列表(平铺)")
@GetMapping("/admin/category/list")
public R categoryListForAdmin(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) {
PageInfo pageInfo = categoryService.selectCategoryByList(pageNum, pageSize);
return R.success(pageInfo);
}
}
三、pageInfo对象
public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow 和endRow 不常用,这里说个具体的用法
//可以在页面中"显示startRow 到endRow 共size 条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
}
标签:插件,pageNum,分页,pageSize,int,Spring,Boot,private,PageHelper
From: https://www.cnblogs.com/keyongkang/p/16941031.html