PageHelper分页pageSize和total异常问题

分页开启语句必须放到查询语句之前,不然无效。

// 开启分页
PageHelper.startPage(pageNum, pageSize);
// 查询
List<Course> courseList = baseMapper.selectByCondition();

pageSize等于total的问题是因为在给PageInfo封装值之前进行过多条sql查询,PageInfo会默认对最后一条查询结果进行封装,所以导致最开始的数据丢失,这种情况主要是:查询的数据来自多张表的同时又要做分页,一般都是先把主要数据查出来,再根据主要数据查询其他表的次要数据,而我们肯定是要把主要数据封装到PageInfo里的,所以如果在所有的语句查询完后,在给PageInfo赋值,主要数据就会丢失,解决办法是,查询了主要数据后立即把数据保存到PageInfo。

保存的PageInfo数据的泛型,不是要返回的泛型,因此要在最后创建第二个泛型为返回值的PageInfo对象。

public PageInfo<CourseVO> getCourseVOList(CourseQuery courseQuery,Integer pageNum,Integer pageSize) 
// 查询
List<Course> courseList = baseMapper.selectByCondition();
PageInfo<Course> page = new PageInfo<>(courseList);

通过工具类复制之前保存下来的数据即可,我们要设置的只有List集合而已

PageInfo<CourseVO> page2 = new PageInfo<>();
BeanUtils.copyProperties(page, page2);
page2.setList(voList);
return page2;

你可能感兴趣的:(笔记)