1.分页方法PageUtils
请见前几期:https://blog.csdn.net/weixin_44145478/article/details/102461178
public class Teacher {
private String name;
private Integer age;
private String sex;
//set get...
}
通常情况
解析:
(1)封装的PageUtils.startPage(num,size),这个方法就是类似我们数据库操作的limit start ,count
(2)得到的对象里面包含很多的字段信息,需要的有(总页数,总条数,当前页,以及该页数据)
(3)如果我们只想得到分页处理之后我们的实体对象的结果,那么就调用PageUtils对象的getDataList()方法即可。
@Test
public void test3() {
PageBaseReqVo pageBaseReqVo = new PageBaseReqVo();
pageBaseReqVo.setPageNo(2);
pageBaseReqVo.setPageSize(10);
PageUtils.setStartPage(pageBaseReqVo.getPageNo(), pageBaseReqVo.getPageSize());
//根据条件查询数据......
List<Teacher> teachers = teacherMapper.selectAll();
PagedResult<Teacher> teacherPagedResult = PageUtils.toPagedResult(teachers);
System.out.println(teacherPagedResult);
}
查询数据处理产生分页问题
使用分页查询数据库得到的数据不做处理,直接返回给前端不会有问题,如果处理分页的数据,会造成(总页数为1,当前页1,全部数据只有当前数据量)
正确做法
@Test
public void test2() {
UserReqVo userReqVo = new UserReqVo();
userReqVo.setName("a");
userReqVo.setPageNo(2);
userReqVo.setPageSize(10);
//PageUtils.startPage(pageNum , pageSize),这个方法就是类似我们数据库操作的limit start ,count
PageUtils.setStartPage(userReqVo.getPageNo(), userReqVo.getPageSize());
List<TeacherRespVo> resps = new ArrayList<>();
//根据条件查询数据(select id, `name`, age, sex FROM teacher LIMIT 10, 10;)
List<Teacher> teachers = teacherMapper.selectAll();
//得到分页的结果对象(总页数,总条数,当前页,以及该页数据)
PagedResult<Teacher> pagedResult = PageUtils.toPagedResult(teachers);
for (Teacher teacher : pagedResult.getDataList()) {
//数据处理(返回合适的类型和格式)
TeacherRespVo teacherRespVo = new TeacherRespVo();
BeanUtils.copyProperties(teacher, teacherRespVo);
resps.add(teacherRespVo);
}
// 根据条件查询的所有数据与处理后返回的数据,不是同一对象,重新设置(总页数,总条数,当前页,以及该页数据)
PagedResult<TeacherRespVo> respVoPagedResult = new PagedResult<>();
BeanUtils.copyProperties(pagedResult, respVoPagedResult);
respVoPagedResult.setDataList(resps);
System.out.println(respVoPagedResult);
}
更多分页用法
参考:https://blog.csdn.net/cs_hnu_scw/article/details/80718467
来源:CSDN
作者:yaoyaomei
链接:https://blog.csdn.net/weixin_44145478/article/details/104044624