最新SpringBoot集成PageHelper

最新SpringBoot集成PageHelper,第1张

最新SpringBoot集成PageHelper SpringBoot集成pagehelper依赖

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

第一种:

		
		
			com.github.pagehelper
			pagehelper
			5.1.2
		

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

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;


@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.PageInterceptor。 com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。(https://pagehelper.github.io/docs/howtouse/)

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

第二种:

		
		
			com.github.pagehelper
			pagehelper-spring-boot-starter
			1.4.1
		

可以看一下导入两个依赖的区别:


可以看出导入第二种依赖是多了两个依赖包,这两个依赖包就是自动配置拦截器,推荐使用。

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 tbCpsGoodList = wmCpsMapper.selectTbShopByMaterialTypeId(materialTypeId);
        if (ListUtil.isEmpty(tbCpsGoodList)) {
            return baseResponse.successRes(GlobalEnum.RESPONSE_NO_DATA);
        }
      	// 第三步 通过PageInfo对象可以获取分页后的信息 常用的如下:
        PageInfo 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分页原理。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存