记录SpringBoot+Mybatis+PageHelper分页踩坑:Pages总页数查出来始终为1,Total数有误

2023-11-18

记录Mybatis使用PageHelper遇到的坑:

使用PageHelper时

PageHelper.startPage(page,limit);
List<PostsLikeVo> listPostsLikeVo = postsService.getPostFrontList(postFrontQuery);
PageInfo<PostsLikeVo> postsLikeVoPageInfo = new PageInfo<>(listPostsLikeVo);

long total = postsLikeVoPageInfo.getTotal();
int pages = postsLikeVoPageInfo.getPages();

得到的pages
Pages总页数查出来始终为1
在这里插入图片描述
因为平时也没研究过PageHelper原理和源码;所以多方查证后才知道:
是VO拼接姿势不对


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

原来问题出现在Vo上,解决办法之一有

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);

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

转换一下VO
也可能有其他解决办法,特此记录一下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录SpringBoot+Mybatis+PageHelper分页踩坑:Pages总页数查出来始终为1,Total数有误 的相关文章

随机推荐