在微服务里面做查询接口,用到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
后,不会关闭获取的连接,这个参数的设置要根据自己选择的数据源来决定
相关推荐
3. **结果处理**:返回结果时,PageHelper会将结果包装成PageInfo对象,包含分页所需的数据,如总记录数、总页数等。 总的来说,PageHelper插件通过简化分页操作,提高了开发效率,同时保持了代码的整洁性。在实际...
PageHelper是MyBatis框架的一个强大分页插件,它为开发者提供了便捷的数据库分页功能。本项目“pagehelper Demo 基于mybatis”旨在演示如何在实际开发中集成并使用PageHelper进行数据分页操作。下面将详细介绍...
5. **结果集封装**: 返回的结果集自动封装为Page对象,包含了总记录数、总页数、当前页数等信息,方便进行页面展示。 6. **易于使用**: 提供了简单的API接口,如Page start()、end()、size()等,使得分页配置变得...
PageHelper会自动处理分页,返回的结果集已经包含了分页后的数据和一些统计信息,如总页数、总记录数等。 PageHelper支持多种数据库,包括MySQL、Oracle、SQL Server等,能够根据不同的数据库方言自动生成对应的...
同时,它还提供了合理的分页功能,即当 `reasonable` 设置为 `true` 时,如果用户输入的页码超出了实际页数,PageHelper 会返回最后一个页面的数据,避免出现空页面。 此外,PageHelper 还有其他高级特性,如自动...
1. 合理化模式:当设置reasonable为true时,如果当前页数超过总页数,会返回最后一页的数据,而不是抛出异常。 2. 自动计算总记录数:默认情况下,PageHelper会在查询数据的同时计算总记录数,但如果数据量过大,...
后端需要在响应中返回当前页码、总页数等信息,前端根据这些信息生成分页导航。 7. **TestPageHelper** "TestPageHelper"可能是项目中的测试类,用于验证分页功能是否正常工作。通常,这类测试类会模拟前端请求,...
5. **获取结果**:查询结果会返回一个List,同时可以通过PageInfo对象获取到分页信息,如总页数、总记录数等。 在实际应用中,PageHelper的使用可以大大提高开发效率,特别是在数据量庞大的情况下,它能够有效减轻...
3. **结果集自动封装**:返回的结果集会被自动封装成Page对象,其中包含了总记录数、总页数以及当前页的数据列表,方便开发者直接使用。 4. **支持多种数据库**:除了主流的关系型数据库,PageHelper还支持分布式...
PageHelper返回的Page对象不仅包含查询结果,还包含了分页信息,如总记录数、总页数等。此外,Page对象内部封装了ResultMap,可以方便地进行数据处理。 5. **动态SQL支持**: PageHelper支持使用Mybatis的动态SQL...
3. **编写Mapper接口**:在Mapper接口中,定义一个返回List类型的查询方法,PageHelper会自动处理分页逻辑。 4. **使用PageHelper**:在Service或DAO实现类中,通过PageHelper的`PageInterceptor`拦截器启动分页,...
3. **reasonable**:是否开启合理化参数,如果开启,当pageNum时会返回第一页,当pageNum>总页数时会返回最后一页。默认关闭。 4. **params**:可以传入额外的参数,如"offset"和"limit",用于兼容某些不支持传统...
- **3.4.1版本**:此版本修复了一个关键的bug,即当`SqlParser`解析SQL失败时可能会返回不包含`count(*)`的SQL,从而导致查询失败的问题。 - **3.4.0版本**:增加了对`@SelectProvider`注解的支持,并进行了大量内部...
PageHelper为MyBatis提供了强大的分页功能,使得在处理大数据量时更加高效。在这个场景中,"3.4.2-fix"可能是对原版3.4.2版本的一个修复或优化版本,以解决某些已知问题或增加新特性。 描述中提到"e3mall",这可能...
5. 分页结果集封装:返回的Page对象包含了查询结果和分页信息,如当前页码、总页数、总记录数等。 JSqlParser-0.9.4.jar是PageHelper插件的依赖之一,它是一个解析SQL语句的开源库,用于PageHelper动态生成分页SQL...
然而,当数据量增大时,如何实现高效的分页查询就显得尤为重要,这时PageHelper插件便能大显身手。本文将深入探讨如何在SpringBoot项目中整合MyBatis与PageHelper,实现高效便捷的分页功能。 一、SpringBoot与...
在Controller层,将返回的Page对象转换为前端可理解的数据格式。 5. **运行与测试**:启动项目,通过请求携带分页参数(如当前页数和每页条数),测试分页功能是否正常。 PageHelper5.0.2版本的更新可能包含一些...
当用户点击分页链接时,发送请求到服务器,服务器端根据请求的页码重新执行分页查询,然后返回更新后的页面内容。 总结来说,PageHelper是一个强大的分页工具,它简化了Java Web开发中的数据库分页操作。在IDEA中,...
当执行查询操作时,PageHelper会自动在SQL语句后面添加上分页相关的计算,如LIMIT或OFFSET等,使得数据库能直接返回指定范围的数据。 2. **使用步骤**: - 引入依赖:在项目中引入PageHelper的Maven或Gradle依赖。...
6. 获取结果:查询后,可以通过Page对象获取分页后的结果集以及总页数、总记录数等信息。 例如,以下是一个简单的使用示例: ```java // 导入PageHelper和Page对象 import com.github.pagehelper.Page; import ...