zoukankan      html  css  js  c++  java
  • 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总共只有三条数据,当页数超过当前总页数时会查询第一页的,即参数分页合理化,如果后面的哥们有遇到类似的问题,希望能能帮到。

  • 相关阅读:
    OpenGL3:幼儿园篇 第三章 几何变换
    OpenCV2:应用篇 三维重建
    Word绑定博客园
    Android大学课件SQLite3 数据库操作
    Android Studio导入jar包
    安卓Android基础四天
    学习Android过程中遇到的未解决问题(个人笔记,细节补充,随时更新)
    学习Android过程中遇到的问题及解决方法——电话监听
    学习Android过程中遇到的问题及解决方法——网络请求
    安卓Android基础第三天——数据库,ListView
  • 原文地址:https://www.cnblogs.com/SimonHu1993/p/8458230.html
Copyright © 2011-2022 走看看