使用pageHelper进行分页查询遇到的问题

问题现象:没有根据传入的pageNum和PageSize进行正确分页,比如传入的是pageNum=1,pageSize=5,期望查询出的数量应该为20,但是实际total不对,pages也不对,pageSize也被改了

 

public PageInfo<ClueInfoDTO> getSampleOrCustomerList(String appId, String openId, Byte isCustomer, int pageNum, int pageSize) {

        List<ClueInfoDTO> clueInfoDTOList = new ArrayList<>();
        PageHelper.startPage(pageNum, pageSize);
        UserClueInfo param = new UserClueInfo();
        param.setAppId(appId);
        param.setToOpenId(openId);
        param.setIsCustomer(isCustomer);
        List<UserClueInfo> retList = userClueInfoMapper.select(param);
        if (Objects.isNull(retList)){
            return new PageInfo<>(clueInfoDTOList);
        }
        List<String> fromOpenIdList = retList.stream().map(UserClueInfo::getFromOpenId).collect(Collectors.toList());
        Example wexample = new Example(UserWxUnionInfo.class);
        Example.Criteria wcriteria = wexample.createCriteria();
        wcriteria.andEqualTo("appid",appId);
        wcriteria.andIn("openid", fromOpenIdList);

        Map<String, UserWxUnionInfo> fromOpenIdMap = userWxUnionInfoMapper.selectByExample(wexample).stream().collect(Collectors.toMap(UserWxUnionInfo::getOpenid, s -> s));

        retList.forEach((userClue) -> {
            ClueInfoDTO clueInfoDTO = new ClueInfoDTO();
            BeanUtils.copyProperties(userClue, clueInfoDTO);
            UserWxUnionInfo user = fromOpenIdMap.get(clueInfoDTO.getFromOpenId());
            if (Objects.nonNull(user)) {
                clueInfoDTO.setName(setWxUserName(user));
                clueInfoDTO.setUserAvatar(user.getPicurl());
            }
            clueInfoDTOList.add(clueInfoDTO);
        });
        return new PageInfo<>(clueInfoDTOList);
    }

debug也没发现什么问题,后来发现原来是对返回的retList做了forEach处理后,使用新的List作为返回的数据有问题,后来代码修改为如下就可以正常分页了。

 

List<ClueInfoDTO> clueInfoDTOList = new ArrayList<>();
        PageHelper.startPage(pageNum, pageSize);
        UserClueInfo param = new UserClueInfo();
        param.setAppId(appId);
        param.setToOpenId(openId);
        param.setIsCustomer(isCustomer);
        List<UserClueInfo> retList = userClueInfoMapper.select(param);
        if (Objects.isNull(retList) || retList.size() == 0) {
            return new PageInfo<>(clueInfoDTOList);
        }
        PageInfo<UserClueInfo> plist = new PageInfo<>(retList);
        List<String> fromOpenIdList = retList.stream().map(UserClueInfo::getFromOpenId).collect(Collectors.toList());
        Example wexample = new Example(UserWxUnionInfo.class);
        Example.Criteria wcriteria = wexample.createCriteria();
        wcriteria.andEqualTo("appid", appId);
        wcriteria.andIn("openid", fromOpenIdList);

        Map<String, UserWxUnionInfo> fromOpenIdMap = userWxUnionInfoMapper.selectByExample(wexample).stream().collect(Collectors.toMap(UserWxUnionInfo::getOpenid, s -> s));
        PageInfo<ClueInfoDTO> retPageList = new PageInfo<>();
        retList.forEach((userClue) -> {
            ClueInfoDTO clueInfoDTO = new ClueInfoDTO();
            BeanUtils.copyProperties(userClue, clueInfoDTO);
            UserWxUnionInfo user = fromOpenIdMap.get(clueInfoDTO.getFromOpenId());
            if (Objects.nonNull(user)) {
                clueInfoDTO.setName(user.getNick());
                clueInfoDTO.setUserAvatar(user.getPicurl());
            }
            clueInfoDTOList.add(clueInfoDTO);
        });
        PagerCopyUtil.setPageInfo(retPageList,plist,clueInfoDTOList);
        return retPageList;

先保存原来的List的分页信息,后面进行手动set即可。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值