pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
解读上述配置项:
经过以上两步,我们就成功配置好了PageHelper插件。
2.2编写一个入门的程序,体验分页过程
java复制代码
//查询所有挂号记录
public List<Register> queryAllRegister(String registerName) {
/*return registerMapper.queryAllRegister(registerName);*/
//1、必须在第一行开启分页查询
PageHelper.startPage(1,3);//查询第1页,每页3条数据
//2、获取原始查询结果
List<Register> registers = registerMapper.queryAllRegister(registerName);
//3、将原始查询结果进行分页
PageInfo<Register> registerPageInfo = new PageInfo<>(registers);
//3.1 获取分页后的对象集合
List<Register> list = registerPageInfo.getList();
//3.2 获取总行数
long total = registerPageInfo.getTotal();
//3.3 获取当前页码
int pageNum = registerPageInfo.getPageNum();
//3.4 获取总页数
int pages = registerPageInfo.getPages();
//3.5 获取每页的行数
int pageSize = registerPageInfo.getPageSize();
System.out.println("总行数" + total);
System.out.println("获取当前页码" + pageNum);
System.out.println("获取总页数" + pages);
System.out.println("pageSize" + pageSize);
//返回分页后的信息
return list;
}
注意:我们在该代码中,已经定死了就查询第1页数据,每页3条数据。
运行效果:使用apifox发送请求,后端接口返回的数据如下。可见此时返回的结果就3条数据。
{
"code": 200,
"message": "ok",
"data": [
{
"id": 1,
"number": "HIS-SJWK-0001",
"registerName": "李秀英",
"gender": 2,
"idNumber": "131081197809232510",
"birthday": "1978-09-23",
"age": 47,
"ageType": "岁",
"homeAddress": "北京市朝阳区",
"visitDate": "2025-03-12",
"noon": "上午",
"deptCategoryId": 1,
"deptId": 1,
"regisLeId": 1,
"clinicId": 3,
"settleId": 1,
"isBook": "0",
"registTime": "2025-03-09 12:37:09",
"registerId": 2,
"visitState": 1,
"deptCategoryName": "外科",
"deptName": "神经外科",
"registName": "专家号",
"clinicNickname": "孙明",
"settleName": "自费",
"registerNickname": "张敏",
"deptCode": null
},
{
"id": 53,
"number": "HIS-SJWK-0002",
"registerName": "缴鸿剑",
"gender": 1,
"idNumber": "131081200209232510",
"birthday": "2002-09-23",
"age": 23,
"ageType": "岁",
"homeAddress": "河北省廊坊市霸州市胜芳镇",
"visitDate": "2025-03-12",
"noon": "上午",
"deptCategoryId": 1,
"deptId": 1,
"regisLeId": 1,
"clinicId": 3,
"settleId": 1,
"isBook": "0",
"registTime": "2025-03-11 21:10:27",
"registerId": 2,
"visitState": 1,
"deptCategoryName": "外科",
"deptName": "神经外科",
"registName": "专家号",
"clinicNickname": "孙明",
"settleName": "自费",
"registerNickname": "张敏",
"deptCode": null
},
{
"id": 54,
"number": "HIS-SJWK-003",
"registerName": "温霜降",
"gender": 2,
"idNumber": "131081199808262480",
"birthday": "1998-08-26",
"age": 27,
"ageType": "岁",
"homeAddress": "北京市朝阳区",
"visitDate": "2025-03-13",
"noon": "下午",
"deptCategoryId": 1,
"deptId": 1,
"regisLeId": 2,
"clinicId": 10,
"settleId": 2,
"isBook": "0",
"registTime": "2025-03-11 23:18:52",
"registerId": 2,
"visitState": 1,
"deptCategoryName": "外科",
"deptName": "神经外科",
"registName": "普通号",
"clinicNickname": "赵小川",
"settleName": "医保",
"registerNickname": "张敏",
"deptCode": null
}
]
}
可见此时数据库的表中,一共12行数据,每页3行数据,所以一共分了4页,我们查询的是第一页的数据。
2.3定义一个vo,用来收集分页后的所有信息
java复制代码
@Data
public class PageVo<T> {
/* 分页相关的数据 */
private long total;//总行数。举例:该表总共20行
private int pageNum;//当前页码。举例:当前处于第3页
private int pages;//总页数。举例:总共4页
private int pageSize;//每页的行数。举例:每页5行
/* 某一页的数据 */
private List<T> data;//举例:第4页的全部数据
}