最新SpringBoot集成PageHelper

SpringBoot集成pagehelper依赖:

pagehelper有两个依赖,分别说一下区别:

第一种:

		<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.1.2</version>
		</dependency>

使用这个依赖需要我们手动配置拦截器:

package com.zlp.cps.config;

import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * pagehelper拦截器
 */
@Configuration
public class PageHelperConfig {
    @Bean
    public PageInterceptor pageHelper() {
      	// 注意这里使用的 PageInterceptor
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum","true");
        properties.setProperty("rowBoundsWithCount","true");
        properties.setProperty("reasonable","true");
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("supportMethodsArguments","true");
        properties.setProperty("params","count=countSql");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
}

这里有个小坑:之前注册pagehelper拦截器都是用的PageHelper,新版已经改了,官网原话:

特别注意,新版拦截器是 com.github.pagehelper.PageInterceptorcom.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。(https://pagehelper.github.io/docs/howtouse/

这种还得手动配置,一般不推荐,企业开发一般也不会用。

第二种:

		<!-- 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.4.1</version>
		</dependency>

可以看一下导入两个依赖的区别:
在这里插入图片描述
在这里插入图片描述
可以看出导入第二种依赖是多了两个依赖包,这两个依赖包就是自动配置拦截器,推荐使用。

pagehelper使用:

使用比较简单,直接看例子:

    public BaseResponse getTbGoods(ProgramReq req) {
        Integer materialTypeId = req.getMaterialTypeId();
        int pageNum = Integer.parseInt(String.valueOf(req.getPageNum()));
        int pageSize = Integer.parseInt(String.valueOf(req.getPageSize()));
      	// 第一步 开启分页
        PageHelper.startPage(pageNum, pageSize);
      	// 第二步 根据实际业务sql语句查询
        List<TbCpsGood> tbCpsGoodList = wmCpsMapper.selectTbShopByMaterialTypeId(materialTypeId);
        if (ListUtil.isEmpty(tbCpsGoodList)) {
            return BaseResponse.successRes(GlobalEnum.RESPONSE_NO_DATA);
        }
      	// 第三步 通过PageInfo对象可以获取分页后的信息 常用的如下:
        PageInfo<TbCpsGood> tbCpsGoodPageInfo = new PageInfo<>(tbCpsGoodList);
        int pages = tbCpsGoodPageInfo.getPages(); // 总页数
        long total = tbCpsGoodPageInfo.getTotal(); // 总数
        int curPageNum = tbCpsGoodPageInfo.getPageNum(); // 当前页
        int curPageSize = tbCpsGoodPageInfo.getPageSize(); // 当前页大小
        BaseResponse baseResponse = new BaseResponse();
        baseResponse.setPageNum(curPageNum);
        baseResponse.setPageSize(curPageSize);
        baseResponse.setTotal(total);
        baseResponse.setPages(pages);
        baseResponse.setData(tbCpsGoodList);
        return baseResponse;
    }

三步解决分页问题

看到这里应该能快速上手了,有什么问题可以留言,也可以私聊,后续可以根据需要更新一篇pagehelper分页原理。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码场小兵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值