相信大家在开发过程中都用到过数据分页吧,那么问题来了,说出你平时用到的几种分页方式吧?而我在平时的工作中用到最多的应该属PageHelper这个分页插件了,此处附上官网地址:pagehelper.github.io/
首先我们来说一下如何集成和使用它吧(以Springboot为例)
pom.xml中引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
application.yml中引入配置
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
参数解释
-
helperDialect :分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置
helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver2012 , derby特别注意:使用
SqlServer2012数据库时,需要手动指定为sqlserver2012,否则会使用SqlServer2005的方式进行分页。 你也可以实现AbstractHelperDialect,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。 -
reasonable :分页合理化参数,默认值为
false。当该参数设置为true时,pageNum<=0时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。默认false时,直接根据参数进行查询。 -
supportMethodsArguments :支持通过
Mapper接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面params配置的字段中取值,查找到合适的值时就会自动分页。 -
params :为了支持
startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero= pageSizeZero。
其他参数
- offsetAsPageNum :默认值为
false,该参数对使用RowBounds作为分页参数时有效。 当该参数设置为true时,会将RowBounds中的offset参数当成

本文深入探讨了PageHelper分页插件的集成与使用,详细介绍了配置参数及其作用,如dialect、reasonable等。文章还讨论了ThreadLocal在分页插件中的应用,以及PageHelper如何通过MyBatis拦截器实现SQL动态分页。同时,提到了分页插件对Executor、StatementHandler等MyBatis核心组件的拦截。最后,强调了PageHelper在多数据源和线程安全方面的考虑。
最低0.47元/天 解锁文章
12万+

被折叠的 条评论
为什么被折叠?



