`

为什么pageHelper超过最大页数后还会返回数据

 
阅读更多

微服务里面做查询接口,用到pageHelper,数据库只有8行数据,pageNum=1&pageSize=10,pageNum=2&pageSize=10,pageNum=3&pageSize=10。。。返回的数据都是那8条。

原因:这是pageHelper里面自带的一个功能,叫做reasonable分页参数合理化,3.3.0以上版本可用,默认是false。 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页; 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据。

解决:一般项目里面加入<property name="reasonable" value="false" />spring Boot项目里面:pagehelper.reasonable=false

 

分页插件参数介绍: 

  • helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:

    oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby

    特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012,否则会使用 SqlServer2005 的方式进行分页。

    你也可以实现 AbstractHelperDialect,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。

  • offsetAsPageNum:默认值为 false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为 true 时,会将 RowBounds 中的 offset 参数当成 pageNum 使用,可以用页码和页面大小两个参数进行分页。 
  • rowBoundsWithCount:默认值为false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为true时,使用 RowBounds 分页会进行 count 查询。
  • pageSizeZero:默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。
  • reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
  • params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
  • supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest
  • autoRuntimeDialect:默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页 (不支持自动选择sqlserver2012,只能使用sqlserver)。
  • closeConn:默认值为 true。当使用运行时动态数据源或没有设置 helperDialect 属性自动获取数据库类型时,会自动获取一个数据库连接, 通过该属性来设置是否关闭获取的这个连接,默认true关闭,设置为 false 后,不会关闭获取的连接,这个参数的设置要根据自己选择的数据源来决定 
分享到:
评论

相关推荐

    PageHelper实现前端分页

    3. **结果处理**:返回结果时,PageHelper会将结果包装成PageInfo对象,包含分页所需的数据,如总记录数、总页数等。 总的来说,PageHelper插件通过简化分页操作,提高了开发效率,同时保持了代码的整洁性。在实际...

    pagehelper Demo 基于mybatis

    PageHelper是MyBatis框架的一个强大分页插件,它为开发者提供了便捷的数据库分页功能。本项目“pagehelper Demo 基于mybatis”旨在演示如何在实际开发中集成并使用PageHelper进行数据分页操作。下面将详细介绍...

    PageHelper

    5. **结果集封装**: 返回的结果集自动封装为Page对象,包含了总记录数、总页数、当前页数等信息,方便进行页面展示。 6. **易于使用**: 提供了简单的API接口,如Page start()、end()、size()等,使得分页配置变得...

    mybatis分页插件pageHelper

    PageHelper会自动处理分页,返回的结果集已经包含了分页后的数据和一些统计信息,如总页数、总记录数等。 PageHelper支持多种数据库,包括MySQL、Oracle、SQL Server等,能够根据不同的数据库方言自动生成对应的...

    PageHelper分页插件的使用

    同时,它还提供了合理的分页功能,即当 `reasonable` 设置为 `true` 时,如果用户输入的页码超出了实际页数,PageHelper 会返回最后一个页面的数据,避免出现空页面。 此外,PageHelper 还有其他高级特性,如自动...

    pagehelper-fix

    1. 合理化模式:当设置reasonable为true时,如果当前页数超过总页数,会返回最后一页的数据,而不是抛出异常。 2. 自动计算总记录数:默认情况下,PageHelper会在查询数据的同时计算总记录数,但如果数据量过大,...

    pagehelper分页实例

    后端需要在响应中返回当前页码、总页数等信息,前端根据这些信息生成分页导航。 7. **TestPageHelper** "TestPageHelper"可能是项目中的测试类,用于验证分页功能是否正常工作。通常,这类测试类会模拟前端请求,...

    pagehelper 分页插件jar包

    5. **获取结果**:查询结果会返回一个List,同时可以通过PageInfo对象获取到分页信息,如总页数、总记录数等。 在实际应用中,PageHelper的使用可以大大提高开发效率,特别是在数据量庞大的情况下,它能够有效减轻...

    MyBatis分页插件-PageHelper

    3. **结果集自动封装**:返回的结果集会被自动封装成Page对象,其中包含了总记录数、总页数以及当前页的数据列表,方便开发者直接使用。 4. **支持多种数据库**:除了主流的关系型数据库,PageHelper还支持分布式...

    最新Mybatis-PageHelper分页插件Jar

    PageHelper返回的Page对象不仅包含查询结果,还包含了分页信息,如总记录数、总页数等。此外,Page对象内部封装了ResultMap,可以方便地进行数据处理。 5. **动态SQL支持**: PageHelper支持使用Mybatis的动态SQL...

    pageHelper.rar

    3. **编写Mapper接口**:在Mapper接口中,定义一个返回List类型的查询方法,PageHelper会自动处理分页逻辑。 4. **使用PageHelper**:在Service或DAO实现类中,通过PageHelper的`PageInterceptor`拦截器启动分页,...

    4.1.6PageHelper插件jar包.rar

    3. **reasonable**:是否开启合理化参数,如果开启,当pageNum时会返回第一页,当pageNum&gt;总页数时会返回最后一页。默认关闭。 4. **params**:可以传入额外的参数,如"offset"和"limit",用于兼容某些不支持传统...

    Mybatis分页插件- PageHelper

    - **3.4.1版本**:此版本修复了一个关键的bug,即当`SqlParser`解析SQL失败时可能会返回不包含`count(*)`的SQL,从而导致查询失败的问题。 - **3.4.0版本**:增加了对`@SelectProvider`注解的支持,并进行了大量内部...

    pagehelper-3.4.2-fix

    PageHelper为MyBatis提供了强大的分页功能,使得在处理大数据量时更加高效。在这个场景中,"3.4.2-fix"可能是对原版3.4.2版本的一个修复或优化版本,以解决某些已知问题或增加新特性。 描述中提到"e3mall",这可能...

    pagehelper4.1.1.jar+jsqlparser-0.9.4.jar

    5. 分页结果集封装:返回的Page对象包含了查询结果和分页信息,如当前页码、总页数、总记录数等。 JSqlParser-0.9.4.jar是PageHelper插件的依赖之一,它是一个解析SQL语句的开源库,用于PageHelper动态生成分页SQL...

    springboot-mybatis-pagehelper.zip

    然而,当数据量增大时,如何实现高效的分页查询就显得尤为重要,这时PageHelper插件便能大显身手。本文将深入探讨如何在SpringBoot项目中整合MyBatis与PageHelper,实现高效便捷的分页功能。 一、SpringBoot与...

    Mybatis分页插件PageHelper5.0jar包

    在Controller层,将返回的Page对象转换为前端可理解的数据格式。 5. **运行与测试**:启动项目,通过请求携带分页参数(如当前页数和每页条数),测试分页功能是否正常。 PageHelper5.0.2版本的更新可能包含一些...

    pagehelper.rar

    当用户点击分页链接时,发送请求到服务器,服务器端根据请求的页码重新执行分页查询,然后返回更新后的页面内容。 总结来说,PageHelper是一个强大的分页工具,它简化了Java Web开发中的数据库分页操作。在IDEA中,...

    pagehelper分页插件

    当执行查询操作时,PageHelper会自动在SQL语句后面添加上分页相关的计算,如LIMIT或OFFSET等,使得数据库能直接返回指定范围的数据。 2. **使用步骤**: - 引入依赖:在项目中引入PageHelper的Maven或Gradle依赖。...

    PageHelper分页插件

    6. 获取结果:查询后,可以通过Page对象获取分页后的结果集以及总页数、总记录数等信息。 例如,以下是一个简单的使用示例: ```java // 导入PageHelper和Page对象 import com.github.pagehelper.Page; import ...

Global site tag (gtag.js) - Google Analytics