1、注入依赖(二选一)
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
SSM项目可以使用这个依赖
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
2、pagehelper配置
官方文档API:https://pagehelper.github.io/docs/howtouse/
1、yml配置
#pagehelper分页配置
pagehelper:
helperDialect: mysql #分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
reasonable: true #分页合理化参数,默认值为false。
supportMethodsArguments: true #支持通过 Mapper 接口参数来传递分页参数,默认值false
params: count=countSql #增加了该参数来配置参数映射,用于从对象中根据属性名取值。
2、properties配置
#pageHelper分页配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
3、sql编写
<select id="queryCloudControlConfig" parameterType="com.qr.management.entity.CloudControlEntity" resultType="com.qr.management.entity.CloudControlEntity">
SELECT * FROM tbl_cloud_control_version
<where>
<if test="operator!=null and operator!=''">
operator = #{operator}
</if>
<if test="yuntype!=null and yuntype!=''">
AND yuntype = #{yuntype}
</if>
</where>
</select>
4、代码的编写
1、先写一个Page的实体类 到时候所有需要分页的实体类都可以来继承它
package com.qr.management.entity;
import lombok.Data;
/**
* @author lianJiaYu
* @date 2021/8/23 11:32
*/
@Data
public class PageEntity{
private Integer pageNum; //当前页
private Integer pageSize; //每页显示多少条数据
}
2、自己需要返回的List<实体类>
package com.qr.management.entity;
import com.qr.management.dto.Page;
import lombok.Data;
import java.util.Date;
/**
* @author lianJiaYu
* @date 2021/8/7 14:42
*/
@Data
public class CloudControlEntity extends PageEntity {
private Long idx;
//@NotBlank(message = "display 不为空")
private String display;
//@NotBlank(message = "role 不为空")
private String role;
//@NotBlank(message = "yuntype 不为空")
private String yuntype;
private Date createtime;
private Date updatetime;
//@NotBlank(message = "operator 不为空")
private String operator;
private Long delflag;
}
3、最核心的分页方法来了
核心代码:
PageHelper.startPage(pageNum, pageSize); //通过yml配置进行分页操作
PageInfo<CloudControlEntity> pageInfo = new PageInfo<>(list); //查出来的数据转为PageInfo
@Override
public CommonResultExtend queryCloudControlConfig(CloudControlEntity cloudControlEntity) {
Integer pageNum = cloudControlEntity.getPageNum(); //当前页
Integer pageSize = cloudControlEntity.getPageSize(); //每页显示多少条数据
//pageNum = pageNum == null ? 1 : pageNum;
pageSize = pageSize == null ? 10 : pageSize; //如果前端没传pageSize我们默认每页显示10条数据
PageHelper.startPage(pageNum, pageSize);
List<CloudControlEntity> list = cloudControlConfigDao.queryCloudControlConfig(cloudControlEntity);
PageInfo<CloudControlEntity> pageInfo = new PageInfo<>(list);
return commonResultUtil.getCommonResultUtil(StaticData.codeType.ok, pageInfo);
}
4、代码测试
入参:
{
"pageNum": 1
}
出参:
list中就是查询出来的数据
total是数据总数量
{
"code": 0,
"data": {
"startRow": 1,
"navigatepageNums": [
1
],
"prePage": 0,
"hasNextPage": false,
"nextPage": 0,
"pageSize": 10,
"endRow": 2,
"list": [
{
"yuntype": "force",
"createtime": "2021-08-06T12:47:38.000+0000",
"role": "{\"appver-0\":\"1.2.2\",\"os-0\":\"ios\",\"resver-1\":\"1\",\"appcqid-0\":\"AppStore\"}",
"display": "{\"type\":\"1\",\"desc\":\"强更\",\"dlurl\":\"https://bbb/test/1.apk\",\"isforce\":\"0\",\"newver\":\"1.2.4\",\"notice\":\"亲爱的领主大人:\\n《迷你军团》首发上线震撼来袭!\\n加入官方Q群:123701545领取游戏豪华礼包\\n这里会有最新的游戏资讯、大佬攻略和不定时的福利活动哟!\",\"reward\":\"1|10000#2|66\",\"rewardtext\":\"金币×10000|钻石×66\",\"rewardpic\":\"http://111/a.png#http://111/b.png\"}",
"idx": 1,
"updatetime": "2021-08-21T10:57:53.000+0000",
"delflag": 0,
"operator": "lzj"
},
{
"yuntype": "hot",
"createtime": "2021-08-06T12:48:35.000+0000",
"role": "{\"appver-0\":\"1.2.2\",\"os-0\":\"ios\",\"resver-1\":\"1\",\"appcqid-0\":\"AppStore\"}",
"display": "{\"type\":\"0\",\"desc\":\"热更\",\"dlurl\":\"https://aaa/test/\",\"hashpath\":\"xxxxxxx\",\"newver\":\"2021082115501111\"}",
"idx": 2,
"updatetime": "2021-08-21T10:57:12.000+0000",
"delflag": 0,
"operator": "lzj"
}
],
"pageNum": 1,
"navigatePages": 8,
"total": 2,
"navigateFirstPage": 1,
"pages": 1,
"size": 2,
"isLastPage": true,
"hasPreviousPage": false,
"navigateLastPage": 1,
"isFirstPage": true
},
"errorMsg": "正常",
"gameServerState": 0,
"taskId": "ace1000e-kso3qk1w-2"
}