PageHelper的一个奇葩的问题

先来看看代码(代码较多久截取了部分主要代码)

public Page findWaringRule(PageBaseDTO pageBaseDTO,String areaId) throws BizException {
        //分页处理
        PageHelper.startPage(pageBaseDTO.getPageNum(), pageBaseDTO.getPageSize());

        Page warningRuleVOList = new Page<>();

        //查询所有的WarningRulePO
        Page waringRule = (Page) warningRuleDAO.findWaringRule(areaId);
        if (CollectionUtils.isEmpty(waringRule)){
            throw new BizException("该机构不存在");
        }
        warningRuleVOList.setPageNum(waringRule.getPageNum());
                warningRuleVOList.setPageSize(waringRule.getPageSize());
                warningRuleVOList.setTotal(waringRule.getTotal());

                 //得到所有的告警方案id
                  List idList = waringRule.stream().map(WarningRulePO::getId).collect(Collectors.toList());
                 //根据ruleId得到所有的媒介
                  List warningRuleMediumPOList = warningRuleMediumDAO.findWaringRuleMedium(idList);
                  //根据ruleId得到所有的信息
                  List warningRuleTargetPOList = warningRuleTargetDAO.findWaringRuleTarget(idList);
        }

写好之后可能一看没问题呀!跑一下看看,也没问题。当我第二次调用接口的时候就出问题了。每一次调接口的时候都会少很多数据再调一次接口又会少很多数据就这样接着掉最后就没有任何数据。然后还会抛异常。

解决方法:当调用PageHelper来分页处理的时候一定要关闭分页处理。
PageHelper.clearPage();
例:

Page warningRuleVOList = new Page<>();
          //查询所有的WarningRulePO
          Page waringRule = (Page) warningRuleDAO.findWaringRule(areaId);
          if (CollectionUtils.isEmpty(waringRule)){
              throw new BizException("该机构不存在");
          }
          PageHelper.clearPage();

你可能感兴趣的:(代码)