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

记录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
也可能有其他解决办法,特此记录一下

猜你喜欢

转载自blog.csdn.net/qq_45376627/article/details/114453910
今日推荐