解决class java.util.ArrayList cannot be cast to class com.github.pagehelper.Page (java.util.ArrayList 错误
今天写SpringBoot项目时,出现以下错误
源码:
@Override
public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {
// 1.创建Bean对象
PageBean<Article> pb = new PageBean<>();
// 2.开启分页查询
PageHelper.startPage(pageNum,pageSize);
// 3.调用mapper查询
Map<String,Object> map = ThreadLocalUtil.get();
Integer userId = (Integer) map.get("id");
List<Article> as = articleMapper.list(userId, categoryId , state);
Page<Article> p = (Page<Article>) as;
pb.setTotal(p.getTotal());
pb.setItems(p.getResult());
return pb;
}
原因分析:
java.util.ArrayList类不能强制转换为com.github.pagehelper.Page类
解决过程:
经过我的一般摸索,一开始觉得是导入的版本太高了,不兼容的问题。导致我一直在调版本,结果发现只能用5.x.x的版本。
最后的解决的方法是不用Page而是将 as 封装成PageInfo
@Override
public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {
// 1.创建Bean对象
PageBean<Article> pb = new PageBean<>();
// 2.开启分页查询
PageHelper.startPage(pageNum,pageSize);
// 3.调用mapper查询
Map<String,Object> map = ThreadLocalUtil.get();
Integer userId = (Integer) map.get("id");
List<Article> as = articleMapper.list(userId, categoryId , state);
PageInfo<Article> p = new PageInfo<Article>(as);
//把数据填充到PageBean对象中去
pb.setTotal(p.getTotal());
pb.setItems(p.getList());
return pb;
}
然后就能正常访问了