在项目中使用PageHelper进行分页查询,首先选择的是新的pagehelper-spring-boot-starter依赖,使用完后发现分页功能不生效,进行排查法发现做的项目不是spingboot项目,最后选择普通版本的版本的pagehelper。
左边是第一次引入的pagehelper包,右边是后面引入的版本。
引入普通版本的配置如下
如果是单独的MyBatis框架,需要在SqlMapConfig.xml添加分页插件的配置
3.1 SqlMapConfig.xml配置
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--数据库方言-->
<property name="helperDialect" value="mysql"/>
<!--合理化分页-->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
必须注意配置的顺序,顺序出错,会执行报错!
这里PageHelper有一些参数可以设置,具体可以查看官网文档。
pageHelper官网配置文档
3.2 applicationContext.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注意:这里还有其他Spring相关配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
<!--分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:-->
helperDialect=mysql
<!--#分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,
pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。-->
reasonable=true
<!--#支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值
中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页-->
supportMethodsArguments=true
<!--#为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据
属性 名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable-->
params=count=countSql
</value>
</property>
</bean>
</array>
</property>
</bean>
注意普通版本pageHelper的依赖版本号,4版本和5版本属性配置是不同的
如果因为版本不同配置问题会报错
ClassNotDeFoundException:com.github.pagehelper.PageInterceptor
具体原因看https://blog.csdn.net/zht741322694/article/details/80029654