项目场景:
提示:这里简述项目相关背景:
使用pageHepler分页查询报错信息为
class java.util.ArrayList cannot be cast to class com.github.pagehelper.Page
问题描述
提示:这里描述项目中遇到的问题:
实现条件分页查询的时候
@Override
public PageResult<Article> list(
Integer pageNum, Integer pageSize, String categoryId, String status) {
// 1. 创建PageResult对象
PageResult<Article> pageResult = new PageResult<>();
// 2. 开启pageHelper分页查询
// 3.设置当前页码
Map<String, Object> map = ThreadLocalUtil.get();
Integer userId = (Integer) map.get("id");
// 4. 执行查询
// class java.util.ArrayList cannot be cast to class com.github.pagehelper.Page
PageHelper.startPage(pageNum, pageSize);
List<Article> articles = articleMapper.list(categoryId, status, userId);
Page<Article> page = (Page<Article>) articles;
// 5. 设置总记录数
pageResult.setTotal(page.getTotal());
// 6. 设置当前页数据
pageResult.setRecords(page.getResult());
// 7. 返回结果
return pageResult;
原因分析:
提示:这里填写问题的分析:
网上的解决办法
但是这些都没法解决,所以这个问题还是存在的……
解决方案:
提示:这里填写该问题的具体解决方案:
使用pageInfo封装
@Override
public PageResult<Article> list(
Integer pageNum, Integer pageSize, String categoryId, String state) {
// 1. 开启pageHelper分页查询
PageHelper.startPage(pageNum, pageSize);
// 2. 执行mapper查询
Map<String, Object> map = ThreadLocalUtil.get();
Integer userId = (Integer) map.get("id");
List<Article> articles = articleMapper.list(categoryId, state, userId);
// 使用pageInfo包装查询结果,获取分页信息
PageInfo<Article> page = new PageInfo<>(articles);
// 3. 返回结果
return new PageResult<>(page.getTotal(), page.getList());
}