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 = viewInvoiceList(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", List());
result.put("number", Total()+Total());
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总共只有三条数据,当页数超过当前总页数时会查询第⼀页的,即参数分页合理化,如果后⾯的哥们有遇到类似的问题,希望能能帮到。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论