springboot应用, 加入 PageHelper
pom.xml:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.4.1</version>
<scope>compile</scope>
</dependency>
spring. application.properties
# mybatis_config
mybatis.mapper-locations=classpath*:com/vjia/device/mapper/*.xml
mybatis.type-aliases-package=com.vjia.device.entity
pagehelper.helperDialect = mysql
pagehelper.reasonable = true
pagehelper.supportMethodsArguments = true
pagehelper.params=count=countSql
pagehelper.returnPageInfo="check"
问题:
在微服务里面中的查询功能,使用PageHelper,数据库6行数据,
pageNum=1&pageSize=10,pageNum=2&pageSize=10,pageNum=3&pageSize=10
返回的数据都为6条。
原因:
这是PageHelper 自带的 功能,叫做reasonable分页参数合理化,3.3.0以上版本可用,默认是false。
启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页;
禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据。
解决:
项目加入<property name="reasonable" value="false" />,
Spring Boot项目里面 application.properties加入:pagehelper.reasonable=false
PS
pagehelper.supportMethodsArguments=true的作用如下:
#如果启用supportMethodsArguments参数,则pageHelper可以自动拦截请求参数中的pageNum,pageSize参数 #不启用supportMethodsArguments参数,则需使用PageHelper.startPage(pageNum,pageSize)方法调用 pagehelper.supportMethodsArguments=true