springboot集成pagehelper插件实现分页效果

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"
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值