pageHelper多个sql分页

Posted SimonHu1993

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pageHelper多个sql分页相关的知识,希望对你有一定的参考价值。

之前有个需求,在一个页面中需要有多个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分页的主要内容,如果未能解决你的问题,请参考以下文章

sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询

mybatis—动态代理getMapper传入参数输出结果动态sql以及扩展的PageHelper分页

mybatis—动态代理getMapper传入参数输出结果动态sql以及扩展的PageHelper分页

mybatis—动态代理getMapper传入参数输出结果动态sql以及扩展的PageHelper分页

mybatis—动态代理getMapper传入参数输出结果动态sql以及扩展的PageHelper分页

分页插件pagehelper的运用(超舒服,以后再也不用在sql里写)