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分页