使用PageHelper分页插件手动分页,其他查询数据出现串连问题
在一个需求中,需要在代码中进行分页,于是就选用了PageHelper分页插件进行分页,刚开始的时候忘记了PageHelper分页插件的用法于是我就用:
// 设置分页查询条件
PageHelper.startPage(pageNum, pageSize);objects.addAll(objectList);
objects.getTotal();
objects.getPageNum();
objects.getPageSize();
objects.getResult();
使用这个方式进行分页。
但是在执行其他查询的时候,却出现了这个分页插件分页之后的数据出现在当前查询的数据的前几条,导致查询数据报错,一直报错。
最终排查问题定位位置在于这个分页查询的问题。
最后在查询资料后选择了另一个分页方式解决的这个问题:
/*** pagehelper 手动分页* @param currentPage 当前页* @param pageSize* @param list* @param <T>* @return*/public static <T> PageInfo<T> getPageInfo(int currentPage, int pageSize, List<T> list) {int total = list.size();if (total > pageSize) {int toIndex = pageSize * currentPage;if (toIndex > total) {toIndex = total;}list = list.subList(pageSize * (currentPage - 1), toIndex);}Page<T> page = new Page<>(currentPage, pageSize);page.addAll(list);page.setPages((total + pageSize - 1) / pageSize);page.setTotal(total);PageInfo<T> pageInfo = new PageInfo<>(page);return pageInfo;}
后来又查询资料查询了具体的原因:
底层主要是通过将pageNum,pageSize,及list放入ThreadLocal,
protected static final ThreadLocal<Page> LOCAL_PAGE = new ThreadLocal<Page>();
但是在执行完.startPage()后,没有查询数据库操作,并且此次查询请求响应结束,线程空闲时,又有新的别的查询请求进来,此时线程复用,mybaits通过自身的拦截器,导致给新的查询自动添加了limit?,?,或者是在查询时在查询出来的数据前加上放在Page中的数据,导致查询出来的数据有问题,从而报错
又找到了第二种解决方案,也是PageHelper分页插件的正确分页方式:
// 设置分页查询条件
PageHelper.startPage(pageNum, pageSize);
PageInfo<UserDto> pageInfo = new PageInfo<>(userDtoList);
pageInfo.getTotal();
pageInfo.getPageNum();
pageInfo.getSize();
以上是我遇到的问题以及解决方案
使用PageHelper分页插件手动分页,其他查询数据出现串连问题相关推荐
- spring boot+mybatis+thymeleaf+pagehelper分页插件实现分页功能
文章目录 前言 正文 业务场景 后端 pom.xml application.yml 实体类video.java和User.java----映射VideoMapper.xml----VideoMapp ...
- 全注解怎么使用分页插件_分页插件使用的方式
分页插件使用的方式 修改 pom 文件,添加分页 jar 包依赖 修改 mybatis.xml 文件 UserDao 接口,UserMapper.xml 添加对应方法与实现 sql 对应 UserSe ...
- mybatis分页插件_MyBatis 分页插件 5.2.0 发布
时隔整整8个月,分页插件这次带来了一次大的更新. 5.2.0 - 2020-07-26 •jsqlparser升级到3.2版本,sql解析更好,对sqlserver支持更好.•修改 sqlserver ...
- [置顶]mybatis分页插件实现分页...
1.了解过程:在数据库服务器中,sql语句实现分页便要每个查询语句都要写上limit(开始,结束),并且不能灵活的随前端变化,为此使用拦截器的方法,过程:拦截器拦截请求的sql语句(根据需要拦截的ID ...
- Mybatis采用分页插件实现分页
前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下! 也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习,让 ...
- java ajax jquery分页插件_JQueryPagination分页插件,ajax从struts请求数据
2017-07-16 学完了struts2,做了个关于分页的小例子,用到了JQuery分页插件Pagination,先贴下插件下载地址 插件作者对于参数讲解的不够详细,琢磨了半天才明白怎么用,不多说, ...
- jquery php 分页插件,jQuery 分页插件代码
jQuery 分页插件代码 js代码 var newlist = new Vue({ el: '#app', data: { current_page: 1, //当前页 pages: 50, //总 ...
- element ui +mybatisPlus分页插件实现分页功能
elementui pagination插件 当然这里的依赖部分就需要去创库ctrl+v了 <!--分页部分 pagination插件 @current-change="handlep ...
- java ssh 分页插件,mybatis分页插件mybatis-paginator问题
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.miemiedev.mybatis.pag ...
最新文章
- UNIX中的文件和目录
- 多校1010 Taotao Picks Apples
- GitHub for Windows使用教程(二) 分支的使用
- php撒意思,php表示是什么意思
- 北漂、海漂的你,每个月发薪资支付生活成本后还剩多少钱
- Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O
- 美的集团:收购KUKA总价款为15亿欧元
- stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
- js中数组的一些操作
- Mac苹果Time Machine 备份速度太慢的解决方法!
- Python打码API(学习使用)
- Netty:原理架构解析
- 数值分析及其matlab实现习题答案,数值分析练习题(含答案).doc
- html div 怎么排版,请html大神解决一个div排版的问题
- mfc 使用flash控件注意事项
- JESD204B SUBCLASS1确定性延时参数的计算
- Matlab Shift Arithmetic模块
- 人面不知何处去,桃花依旧笑春风……
- Mysql 带条件计数
- 服务器最多带多少硬盘,一般服务器的硬盘空间有多大?怎么能给那么多 – 手机爱问...