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自带的分页功能(利用 ...
随机推荐
- 如何使用Jquery直接导入记事本的内容
直接上代码 <!DOCTYPE html> <html> <head> <title> </title> </head> < ...
- Confluence 6 目录中的数据库
所有的其他数据库,包括有页面,内容都存储在数据库中.如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库.数据库有关的文件将会存储在 da ...
- Confluence 6 数据库连接方式
你可以使用 JDBC URL 或者一个 JNDI 数据源来连接 Confluence 到你的数据库. 在默认的设置向导中,只提供了使用 JDBC 数据库连接选项,这个也是推荐的数据库连接选项. 如果你 ...
- Confluence 6 导入模板的定义
模板是一个预先定义的页面,这个预先定义的页面可以在创建新页面的时候预先载入.模板能够给一个页面统一的样式或格式. 你可以在 Confluence 中创建你自己的模板,请查看页面 Create a Te ...
- 移动端touchstart,touchmove,touchend
近段时间使用html5开发一个公司内部应用,而触摸事件必然是移动应用中所必须的,刚开始以为移动设备上或许也会支持鼠标事件,原来是不支持的,好在webkit内核的移动浏览器支持touch事件,并且打包成 ...
- LeetCode(97):交错字符串
Hard! 题目描述: 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 1: 输入: s1 = "aabcc", s2 = &qu ...
- jsp 错误处理
JSP提供了很好的错误处理能力.除了在Java代码 中可以使用try语句,还可以指定一个特殊页面.当应 用页面遇到未捕获的异常时,用户将看到一个精心设计 的网页解释发生了什么,而不是一个用户无法理解的 ...
- cf1110E 思维
/* Ci'=Ci+1 + Ci-1 -Ci Ci+1 - Ci' = Ci - Ci-1 Ci' - Ci-1 = Ci+1 - Ci; 即求一次Ci’等价于交换Ci和Ci-1 与 Ci+1和Ci的 ...
- Fidder 请求信息颜色的含义
颜色 含义 红色 HTTP状态错误 黄色 HTTP状态需用户认证 灰色 数据流类型CONNECT 或 响应内容是图片 紫色 响应内容是CSS文件 蓝色 响应内容是HTML 绿色 响应内容是Script ...
- Android Studio 调用夜神模拟器
操作系统:Windows 10 x64 IDE:Android Studio 3.3 夜神模拟器 首先,启动夜神模拟器.快捷键WIN + R打开运行窗口,输入cmd,启动cmd.exe. 使用cd命令 ...