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);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis-Plus分页插件不生效的解决方法

    描述 项目中用到boot 整合 mybatis-plus , 个人在使用分页条件查询的时候一直查不出 total, pages, 终于找到原因了. 环境 <springboot.version>2.1.5.RELEASE</springboot.version> <mybatisplus.version>3.1.1</mybatisplus.version> 配置 1.自定义MybatisPlusConfig 配置分页插件 package com.eyela

  • Mybatis分页插件PageHelper的配置和简单使用方法(推荐)

    前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分页 一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算count和分页逻辑,一般前端组件(例如dataTable)会提供分页动作. 特点是:简单,很适合小规模的web平台:当数据量大的时候会产生性能问题,在查询和网络传输的时间会很长. 后端分页 在ajax请求中指定页码(pageNum)和每页的大小(pageSize),后端查询出当页的数据返回

  • Mybatis分页插件PageHelper的使用详解

    1.说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页. 2.使用方法 第一步:在Mybatis配置xml中配置拦截器插件: <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pageh

  • maven下mybatis-plus和pagehelp冲突问题的解决方法

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ 解决办法: 修改pom.xml文件 排除 pagehelp 包的mybatis和mybatis-spring依赖 <!-- pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehe

  • SpringBoot项目中分页插件PageHelper无效的问题及解决方法

    在Springboot项目中使用分页插件的时候 发现PageHelper插件失效了 我导入的是: 后来才发 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency> 现 PageHelper若要在Springbo

  • MyBatis中PageHelper不生效的解决方案

    MyBatis中PageHelper不生效 今天使用pageHelper,发现设置了PageHelper.startPage(page, pageSize);pageSize设置为10,但是结果并没有分页,查处了全部的数据: 问题解决: 原因是mybatis的依赖版本问题,之前配置的是1.0.0版本,这个版本不支持分页拦截 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>

  • Mybatis中foreach标签带来的空格\换行\回车问题及解决方案

    原因 在自已做的内容中通过获取多个商品Id,以此来获取多个商品详细信息.但数据库返回的商品信息的顺序与原来List中产品的id顺序并不匹配,这就导致了前端页面商品的信息显示混乱,不匹配. 通过网上找到order by排序可以有效解决这个问题,返回与查询时的产品id顺序一致.还有一点,List时有序的 这里先附带上这个sql语句(只能在数据库中成功) select prod_id, prod_name, price, `describe`, prod_date, prod_pic, integra

  • Mybatis 中Mapper使用package方式配置报错的解决方案

    踩了个坑,写出来 Mybatis 中Mapper使用package方式配置报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) UserDaoTest中调用了UserDao的insert方法. 1.项目结构如下 2.UserDao接口 package com.mybatis.dao; import org.apache.ibatis.annotations.Mapper; import

  • 解析 MyBatis 中 Mapper 生效的来龙去脉

    目录 一.MyBatis基本使用 1.1 编写配置文件 1.2 编写Mapper接口及测试方法 1.3 结果 二.源码分析 2.1 通过配置文件构建出 SqlSessionFactory 2.2 获取 SqlSession 对象 2.3 根据 SqlSession 获取 Mapper 代理 2.4 通过 Mapper 代理,执行方法操作数据库 2.5 整体流程图 最近闲了快有半个多月了,一直提不起兴致再去看一些书籍(没有以前疯狂吸食知识的欲望了

  • Mybatis中的PageHelper的执行流程分析

    PageHelper Mybatis的执行流程 mybatis中首先要在配置文件中配置一些东西 然后根据这些配置去创建一个会话工厂 再根据会话工厂创建会话,会话发出操作数据库的sql语句 然后通过执行器操作数据 再使用mappedStatement对数据进行封装 这就是整个mybatis框架的执行情况. 插件的执行 它主要作用在Executor执行器与mappedeStatement之间 也就是说mybatis可以在插件中获得要执行的sql语句 在sql语句中添加limit语句,然后再去对sql

  • mybatis中数据加密与解密的实现

    目录 1.需求 2.解决方案 3.使用拦截器方式 3.1定义加密接口 3.2定义加密注解 3.3拦截器加密数据 3.4拦截器解密数据 3.5解密工具类 3.6实体类样例 4.使用类型转换器 4.1定义加密类型 4.2定义类型转换处理器 4.3配置类型转换器的包路径 4.4测试用的实体类 4.5mapper接口文件 4.6mapper映射文件 数据加解密的实现方式多种多样,在mybatis环境中数据加解密变得非常简单易用,本文旨在提供参考,在生产中应尽可能完成单元测试,开展足够的覆盖测试,以验证可

  • MyBatis中如何优雅的使用枚举详解

    问题 本文主要给大家介绍的是关于MyBatis使用枚举的相关内容,我们在编码过程中,经常会遇到用某个数值来表示某种状态.类型或者阶段的情况,比如有这样一个枚举: public enum ComputerState { OPEN(10), //开启 CLOSE(11), //关闭 OFF_LINE(12), //离线 FAULT(200), //故障 UNKNOWN(255); //未知 private int code; ComputerState(int code) { this.code =

  • springboot整合mybatis中的问题及出现的一些问题小结

    1.springboot整合mybatis mapper注入时显示could not autowire,如果强行写(value  = false ),可能会报NullPointException异常 解决方案: dao层加注解@Component(value = "首字母小写的接口名如UserMapper->userMapper") dao层还可以加注解@Mapper 2.The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecogni

  • mybatis中<if>标签bool值类型为false判断方法

    昨天实现一个功能,根据文章的id或者别名查找文章. 起初采用mybatis的Example进行查询,对参数artName进行判断,如果是纯数字就byId查询,否则就by别名.由于查询文章的同时,需要关联查询文章分类标签,所以选择采用select语句映射的方式查询,但又不想写两个查询方法,就使用了mybatis中动态sql. /** * 查询文章 * @param artName id 或 别名 * @param byId 如果是 true 则按照id查询 * 否则 按照别名查询 * @retur

  • SpringBoot整合mybatis结合pageHelper插件实现分页

    SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看官方文档: https://pagehelper.github.io/ 1.使用前配置 关于pageHelper的使用配置,主要有以下2个步骤: 1.1.在pom文件中导入pageHelper依赖 <dependency> <groupId>com.github.pagehelper&

随机推荐