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自带的分页功能(利用 ...
随机推荐
- PHP中$_POST和$_GET的用法
post和get是指:页面提交的两种方式get:参数都体现在url上,可以用于翻页,简单查询,get只能接收2M以下的内容,所以有局限性,另外由于内容是可见的,安全性就下降了,post:用于页面表单 ...
- linq基本操作
一.Linq有两种语法: 1. 方法语法 2. 查询语法 下面举个例子看看这两种方法的区别 比如现在有一个学生类 public class student { public string user ...
- 【转载】 Eclipse注释模板设置详解
Eclipse注释模板设置详解 网站推荐: 金丝燕网(主要内容是 Java 相关) 木秀林网(主要内容是消息队列)
- Confluence 6 新安装配置数据库字符集编码
Confluence 和你的数据库必须配置使用相同的字符集. Confluence 使用 UTF-8 字符集编码,所以你的数据库也必须配置为使用 UTF-8 (或者与 UTF-8 相同的编码,例如在 ...
- Confluence 6 浏览默认的 Decorators
在任何时候,你都可以使用 "Site Layouts" 页面中的 "View Default" 来浏览默认的 decorator 文件.模板浏览器允许你查看使用 ...
- Layers Of Caffe
本文试图描述构建一个网络结构的layers,可以用prototxt脚本直接写,也可以用python接口实现. 最简单的神经网络包含但不限于以下四部分: 数据层(Data): Data.ImageDat ...
- laravel PC内部方法调用
/** * [api 内部请求] * @author Foreach * @param string $method [请求方式] * @param string $url [地址] * @param ...
- Niagara workbench 介绍文档---翻译
一. 发现在建立station的时候存在一些问题,所以对技术文档部分做一个详细的了解,在这之前对出现的问题总结一下 1. 在 Windows操作系统中Application Direction中可以 ...
- Eclipse中部署Android开发环境插件安装问题方案
1.添加第一个插件ADT之后出现eclipse原有的SDK管理问题.需要重新安装SDK 2.一种方式按照系统提示直接联网自动搜索安装,另一种就是下载好之后import. 1.用接口声明的变量称为接口变 ...
- java----AOP框架理解
面向切面编程: 通过动态代理+加配置文件 目的解耦 给主逻辑添加一些修饰功能,但是不在主逻辑代码中进行修改,有点类似python中的装饰器,调用方法还是是通过接口的那个类来调用: import jav ...