MyBatis中PageHelper不生效的解决方案
作者:格子间里格子衫 发布时间:2022-10-23 11:46:47
标签:MyBatis,PageHelper,不生效
MyBatis中PageHelper不生效
今天使用pageHelper,发现设置了PageHelper.startPage(page, pageSize);pageSize设置为10,但是结果并没有分页,查处了全部的数据;
问题解决:
原因是mybatis的依赖版本问题,之前配置的是1.0.0版本,这个版本不支持分页拦截
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
所以修改成1.1.1版本解决问题
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
MyBatis PageHelper手动设置pages属性不生效
环境: springboot+mybatis, 其中使用了pagehelp插件
依赖如下:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
问题描述:
手动构建Page对象, 设置的pages属性不生效, 例如设置值为3, 获取的时候依然是0;
原因:
构造的Page对象没有设置pageSize属性. 调用page对象的setTotal()方法时, 该方法内部根据pageSize属性重置了pages属性的值.
Page对象的setTotal方法源码如下:
public void setTotal(long total) {
this.total = total;
if (total == -1) {
pages = 1;
return;
}
// 如果pageSize<=0, 则直接设置pages=0; pageSize默认为0
if (pageSize > 0) {
pages = (int) (total / pageSize + ((total % pageSize == 0) ? 0 : 1));
} else {
pages = 0;
}
//分页合理化,针对不合理的页码自动处理
if ((reasonable != null && reasonable) && pageNum > pages) {
pageNum = pages;
calculateStartAndEndRow();
}
}
手动构造Page对象代码如下:
// 返回值page对象
Page<StudyRecordVo> pageResult = new Page<>();
// 不设置pageSize,setPages方法调用无效, setTotal方法覆盖了pageResult的pages属性
// 解决方案: 1. 设置pageSize属性在调用setTotal方法之前; 2. setTotal方法调用之后在设置pages属性
pageResult.setPageSize(pageDto.getPageSize());
pageResult.setPages(totalPages);
pageResult.setTotal(totalElements);
pageResult.addAll(studyRecordVoList);
来源:https://blog.csdn.net/sayoko06/article/details/79635559
0
投稿
猜你喜欢
- 本文实例为大家分享了使用aop实现全局异常处理的具体代码,供大家参考,具体内容如下日常业务中存在的问题使用大量的try/catch来捕获异常
- 目录 - JWT- JWT与其它的区别OAuthCookie/Session Auth- JWT的优点- 认证- JWT的缺点-
- 一、环境准备准备开发环境创建一个Maven项目pom.xml添加依赖resources下添加spring的配置文件applicationCo
- 简介本文主要讲解如何用java Selenium 控制鼠标在浏览器上的操作方法。主要列举的代码示例,无图显示。可以自己上代码执行操作看效果。
- 在SSH项目中,有时需要由一个Action跳转到另一个Action。有两种方式可以实现Action之间的跳转,一种是chain,另一种是re
- 前言先放一个官网吧,其实本案例就是根据官网案例来的,只是进行了修改配置。Mybatis-plus官网一、搭建一个springboot项目&n
- 1.面对对象的初步认识1.1什么是面向对象用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。1
- 本文实例讲述了C#异步调用的方法。分享给大家供大家参考。具体如下:using System;using System.Collections
- Java线程池并发执行多个任务Java在语言层面提供了多线程的支持,线程池能够避免频繁的线程创建和销毁的开销,因此很多时候在项目当中我们是使
- 0.解释器(Interpreter)模式定义 :给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
- Java中自动生成构造方法详解每个类在没有声明构造方法的前提下,会自动生成一个不带参数的构造方法,如果类一但声明有构造方法,就不会产生了.证
- 前言在上一篇中,我们介绍了使用位运算实现加法和减法运算,接下来本文主要介绍如何用位运算实现乘法运算,在实现乘法时要用位运算实现,并且不能出现
- 1.设置url-pattern为*.do(最为常见的方式)只要你的请求url中包含配置的url-pattern,该url就可以到达Dispa
- 一.介绍观察者模式(Observer Pattern)属于行为型模式。定义了对象之间的一对多依赖,让多个观察者同时监听某一个主题对象,类似于
- 本文实例讲述了C#模式画刷HatchBrush用法。分享给大家供大家参考。具体如下:using System;using System.Co
- 编写程序,利用continue语句实现循环体过滤器,过滤“老鹰”字符串,并做相应的处理,但是放弃continue语句之后的所有代码。即若遇到
- 这篇文章主要介绍了SpringBoot如何读取war包jar包和Resource资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
- 介绍什么是ThreadLocal?ThreadLocal叫做线程变量,用于在多线程环境下创建线程本地变量。通俗的讲,ThreadLocal可
- 本文实例讲述了Java使用DateFormatter格式化日期时间的方法。分享给大家供大家参考,具体如下:Java版本:1.8开始impor
- 今天来了一个问题:软键盘无法弹出。分析后是因为系统判断当前有外接硬键盘,就会隐藏软键盘。但实际情况并不是这么简单,该问题只有在特定条件下偶现