前两天发现了个有趣的问题,在一个Evaluation类中添加一个Book类属性后,在进行该实体类,通过在数据库读取数据后进行ipage分页展示的时候,出现了浏览器对该Evaluation类对属性无法赋值的问题导致无法加载。
问题原因:在写service服务层的时候,把所有Evaluation实体装入List中,在用增强型for遍历,寻找evaluation.getBookId找到所有book,在用evaluation的set方法把book加进去,在之后通过ipage分页,返回pageObject,其实压根就没有赋值进去,浏览器显示的book的记录也是null值
解决方法:用for i循环,不要用增强型,然后先进行分页,具体如下
/*
* 分页查询评论
* @param page 页号
* @param rows 每页记录数
* @return 分页对象
* */
@Override
public IPage<Evaluation> paging(Integer page, Integer rows) {
QueryWrapper<Evaluation> queryWrapper = new QueryWrapper<Evaluation>();
Page<Evaluation> evaluationPage = new Page<Evaluation>(page,rows);
IPage<Evaluation> pageObject = evaluationMapper.selectPage(evaluationPage,queryWrapper);
List<Evaluation> evaluationList = pageObject.getRecords();
for(int i = 0;i<evaluationList.size();i++){
Evaluation evaluation = evaluationList.get(i);
//获取Book对象
Book book = bookMapper.selectById(evaluation.getBookId());
//获取Member对象
Member member = memberMapper.selectById((evaluation.getMemberId()));
//赋值
evaluation.setBook(book);
evaluation.setMember(member);
}
return pageObject;
}