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分页的更多相关文章
- vue+ springboot 分页(两种方式:sql分页 & PageHelper 分页)
方法一:sql分页 思路:使用数据库进行分页 前端使用element-ui的分页组件,往后台传第几页的起始行offest 以及每页多少行pageSize,后台根据起始行数和每页的行数可以算出该页的 ...
- Vue2.0+ElementUI+PageHelper实现的表格分页
Vue2.0+ElementUI+PageHelper实现的表格分页 前言 最近做了一些前端的项目,要对表格进行一些分页显示.表格分页的方法有很多,从宏观上来说分为物理分页和逻辑分页,由于逻辑分页(即 ...
- sql分页操作
看到了网上关于分页的讲解 对最快的分页语句做了测试 还别说速度真快 总共6w条数据 速度确实so 快 前提是id是主键 或者是索引 declare @page int;--页数 declare @P ...
- SQL Server SQL分页查询
SQL Server SQL分页查询的几种方式 目录 0. 序言 1. TOP…NOT IN… 2. ROW_NUMBER() 3. OFFSET…FETCH 4. 执行 ...
- sql分页代码
//三种sql分页语句 SELECT TOP 分页尺寸 * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM Blob ...
- SQL分页查询结果不一致
今天遇到了SQL分页查询结果不一致的情况,一看代码,原来是没加排序查询!!分页查询最好加排序,且以唯一性高的字段进行排序,如ID,时间等,以保持每页查询结果的准确! PS:又帮别人擦屁股!!
- 真正通用的SQL分页存储过程
关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加 ...
- oracle15 pl/sql 分页
PL/SQL分页 编写分页过程 无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程: ...
- [转]关于SQL分页存储过程的分析
[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...
随机推荐
- LNMP环境部署
说明: 操作系统:CentOS 5.6 32位 准备篇: 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 二.配置防火墙,开启80端口.3306端口 vi /etc/sysconf ...
- 计算机中K到底是1000还是1024?
1000和1024的争论,其实是传输领域和存储领域概念不清引起的;在传输领域,1秒钟传输多少字位(即b,bit),肯定是用10进制表示,所以是1kb=1000b,即1秒钟传输1000个比特位;就好像: ...
- 微信小程序商业级实战
1.微信开放能力:微信支付.微信登录.二维码生成.分享
- 【进阶1-5期】JavaScript深入之4类常见内存泄漏及如何避免(转)
这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://mp.weixin.qq.com/s/RZ8Lpkyk8lz6z5H8Q8SiEQ 垃圾回收算法 常用垃圾回收算法叫做**标记清除 ...
- 在java中,OOA是什么?OOD是什么?OOP是什么?
注:本文来源于< 在java中,OOA是什么?OOD是什么?OOP是什么?> 在java中,OOA是什么?OOD是什么?OOP是什么? OOA Object-Oriented Anal ...
- Confluence 6 管理插件和组件
一个 组件(add-on)是与 Confluence 分开安装的功能,能够加强 Confluence 的功能和使用.插件(plugin)和 组件(add-on)这 2 个词通常是一起使用的. 一共有 ...
- 【python】mongo删除数据
参考:https://stackoverflow.com/questions/23334743/setting-justone-limiter-for-pymongo-remove-throws-ty ...
- mysql 修改配置文件my.cnf失败
一.连接Mysql提示无法通过socket的解决方法连接到本地MySQL服务器 http://www.aiezu.com/db/mysql_cant_connect_through_socket.ht ...
- laravel 中with关联查询限定查询字段
学习了下laravel5.6框架,果然很优雅,比如ActiveJieSuan model中作如下关联:(laravel模型关联关系可以查看https://laravelacademy.org/post ...
- Axure之全局变量
****全局变量*****1.定义:变量是一个数据的容器,是一个字符串,可设置默认值:2.功能:两个功能:读.写3.特点:随时随地可以对变量进行读和写,不限页面.也就是在不同的页面也可以访问同一个全局 ...