java成长之路SpringBoot极简教程 · Spring Boot

关于pageHelper无法查到总数踩到的坑

2019-07-04  本文已影响0人  Java成长之路

问题代码

PageHelper.startPage(pageNum,pageSize);
List<pojoVo> pojoVo=robotService.getPageList();
PageInfo pageResult = new PageInfo(pojoVo);

结果

pageResult.getTotal(); //结果为当前页数量或者没有
pageResult.getPage(); //结果为1

经过微信小伙伴ken提示;发现是VO拼接姿势不对

pageHelper是多线程操作,通过new PageInfo()查询出总条数和总页数;当为new PageInfo(pojoVo)时,是按照pojoVo去查询,所以无法查pojo到数据库中数据的总数的;需要先查出pojoList,然后拼接到Vo里面,在set到pageInfo中

修改后的代码如下

public CommonReturnType getList(Model model,@RequestParam(value = "pageNum",defaultValue = "1")Integer pageNum,
                        @RequestParam(value = "pageSize",defaultValue = "5")Integer pageSize){
PageHelper.startPage(pageNum,pageSize);
List<Pojo> pojoList=pojoService.getPageList();
PageInfo pageResult = new PageInfo(pojoList);

List<PojoVo> voList=new ArrayList<>();
for(Pojo item:pojoList){
    PojoVo pojoVo=assembleRobotListVo(item);
    voList.add(pojoVo);
}
//这一步记得添加
pageResult.setList(voList);

System.out.println(pageResult.getTotal()); //此处已经查询出总条数
System.out.println(pageResult.getPages());
System.out.println(pageResult.getSize());
return CommonReturnType.success(pageResult );
}

//拼接vo


private PojoVo assembleRobotListVo(Pojo pojo){
    PojoVo pojoVo=new PojoVo ();
    pojoVo.setId(pojo.getId());
    pojoVo.setMac(pojo.getMac());
    pojoVo.setName(pojo.getName());
    return pojoVo;
}

备注: pojo为实体类 pojoVo为拼接的Vo显示字段

上一篇下一篇

猜你喜欢

热点阅读