【BUG记录】普通代码BUG

1、PageHelper分页不生效

  • 问题描述:
    列表查询,前端传的参数为pageNum=1,pageSize=10,后端也成功接收了,但debug可以发现,返回的List中不止10条数据,如下图所示列表页展示了超过10条数据,分页不生效:
    在这里插入图片描述

  • 原因分析:

请看PageHepler官方文档FQA第一个
在这里插入图片描述
在我的代码中,设置PageHelper的分页参数后,调用了参数封装的方法this.packageSearchCondition(request,httpRequest),在这个方法中List userRegionList = getUserRegionUtil.getUserRegions(httpRequest)查询了数据库,所以这里才是上面说到的“第一个 Mybatis 的查询”,即PageHelper帮我把这个查询结果分页了,而对于this.baseMapper.selectList(lambdaQueryWrapper)则不再起作用。

@Override
public DcResponse findVipUnitCity(VipUnitRequest request, HttpServletRequest httpRequest) {
    PageHelper.startPage(request.getPageNum(),request.getPageSize());
    LambdaQueryWrapper<VipUnitCity> lambdaQueryWrapper =this.packageSearchCondition(request,httpRequest);
    List<VipUnitCity> list = this.baseMapper.selectList(lambdaQueryWrapper);
    for (VipUnitCity o:list) {
        if(StringUtils.isNotBlank(o.getEnterpriseRegion())){
            BaseRegion baseRegion = new BaseRegion();
            baseRegion.setRegionId(o.getEnterpriseRegion());
            List<BaseRegion> baseRegions = regionExtMapper.findBaseRegion(baseRegion);
            if(CollectionUtils.isNotEmpty(baseRegions)){
                o.setEnterpriseRegion(baseRegions.get(0).getRegionName());
            }
        }
    }
    return DcResponse.ok(new PageInfo<>(list));
}
/**
 * 组装查询条件
 * @param request
 * @return
 */
private LambdaQueryWrapper<VipUnitCity> packageSearchCondition(VipUnitRequest request,HttpServletRequest httpRequest ){
    LambdaQueryWrapper<VipUnitCity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    if(StringUtils.isNotBlank(request.getEnterpriseName())){
        lambdaQueryWrapper.like(VipUnitCity::getEnterpriseName,request.getEnterpriseName());
    }
    if(StringUtils.isNotBlank(request.getEnterpriseRegion())){
        lambdaQueryWrapper.eq(VipUnitCity::getEnterpriseRegion,request.getEnterpriseRegion());
    } else {
        List<String> userRegionList = getUserRegionUtil.getUserRegions(httpRequest);
        lambdaQueryWrapper.in(CollectionUtils.isNotEmpty(userRegionList),VipUnitCity::getEnterpriseRegion,userRegionList);
    }
    if(StringUtils.isNotBlank(request.getEnterpriseOwnerName())){
        lambdaQueryWrapper.like(VipUnitCity::getEnterpriseOwnerName,request.getEnterpriseOwnerName());
    }
    if(StringUtils.isNotBlank(request.getEnterpriseJob())){
        lambdaQueryWrapper.eq(VipUnitCity::getEnterpriseJob,request.getEnterpriseJob());
    }
    lambdaQueryWrapper.orderByDesc(VipUnitCity::getCreateTime);
    return lambdaQueryWrapper;
}

  • 解决方案:
    具体问题具体分析,我这里只需要将代码调换顺序即可解决
@Override
public DcResponse findVipUnitCity(VipUnitRequest request, HttpServletRequest httpRequest) {
    LambdaQueryWrapper<VipUnitCity> lambdaQueryWrapper =this.packageSearchCondition(request,httpRequest);
    PageHelper.startPage(request.getPageNum(),request.getPageSize());
    List<VipUnitCity> list = this.baseMapper.selectList(lambdaQueryWrapper);
    for (VipUnitCity o:list) {
        if(StringUtils.isNotBlank(o.getEnterpriseRegion())){
            BaseRegion baseRegion = new BaseRegion();
            baseRegion.setRegionId(o.getEnterpriseRegion());
            List<BaseRegion> baseRegions = regionExtMapper.findBaseRegion(baseRegion);
            if(CollectionUtils.isNotEmpty(baseRegions)){
                o.setEnterpriseRegion(baseRegions.get(0).getRegionName());
            }
        }
    }
    return DcResponse.ok(new PageInfo<>(list));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值