1. 程式人生 > >pageHelper多個sql分頁

pageHelper多個sql分頁

data nbsp wid shm tar mmap mybatis分頁 pro batis

之前有個需求,在一個頁面中需要有多個sql分頁查詢然後放到一個list中,展示,但是會出現一個bug,就是每次分頁都會展示第一條查出的所有的數據;

第一頁

技術分享圖片

第二頁

技術分享圖片

因為是截的生產環境,第一條數據被處理了,所有截圖有差異,不影響。

看service方法:

public Map getInvoiceList(String epid, String parameter, int page, int pageSize) {
        Map result = new HashMap();
        //查詢發票開票日期小於等於前2天
        Date endTime = DateUtil.addDays(-2);
        //分頁處理
        Map paramMap = new HashMap();
            paramMap.put("epid", epid);
            paramMap.put("status", 10);
            paramMap.put("endTime", endTime);
        PageHelper.startPage(page, pageSize);
        List<Map> oldMap = invoiceMapper.reviewInvoiceList(paramMap);//可復查的發票

        List<Map> list = new ArrayList<>();//第一次查驗發票
        List<Map> totalList = new ArrayList<>();//可查驗發票總和
        if(null != oldMap && !oldMap.isEmpty()){
            totalList.addAll(oldMap);
            PageHelper.startPage(page, pageSize-oldMap.size());
        }else{
            PageHelper.startPage(page, pageSize);
        }
            list = invoiceMapper.invoiceList(paramMap);

        if(null != list && !list.isEmpty()){
            totalList.addAll(list);
            AmountFormatUtil.formatAmount(totalList,"inv_amount");
        }
        //創建返回值對象
        PageInfo<List<Map>> pageInfo = new PageInfo(totalList);
        PageInfo<List<Map>> pageInfo1 = new PageInfo(oldMap);
        PageInfo<List<Map>> pageInfo2 = new PageInfo(list);
        result.put("invoiceData", pageInfo.getList());
        result.put("number", pageInfo1.getTotal()+pageInfo2.getTotal());
        return result;
    }

  發現第一條sql每次翻頁查詢時都是會查出所有的:

技術分享圖片

最後在另一篇博客中發現了:

技術分享圖片

最後在設置中修改:

 @Bean
    public PageHelper pageHelper() {
        log.info("註冊MyBatis分頁插件PageHelper");
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "false");//這裏之前是true
        pageHelper.setProperties(p);
        return pageHelper;
    }

  所以我的查詢數據中,第一條sql總共只有三條數據,當頁數超過當前總頁數時會查詢第一頁的,即參數分頁合理化,如果後面的哥們有遇到類似的問題,希望能能幫到。

pageHelper多個sql分頁