写点什么

springboot 整合 pagehelper

作者:小黄鸡1992
  • 2021 年 11 月 13 日
  • 本文字数:1077 字

    阅读完需:约 4 分钟

springboot整合pagehelper

在日常工作中怎么分页呢?咱们可以在 sql 里面拼接 limit,但是这样是不是有点 low,所以我又访问了一下伟大的百度,又知道了一个插件 pagehelper,那么下面介绍一下 pagehelper。

1.整合

1.添加 pom 文件

首先在 pom 文件中加入依赖。同理版本方面可以访问官网。https://pagehelper.github.io/ 同时里面还有官方文档,想仔细研究的大佬可以去瞧瞧。


       <dependency>            <groupId>com.github.pagehelper</groupId>            <artifactId>pagehelper-spring-boot-starter</artifactId>            <pagehelper.version>1.2.5</pagehelper.version>        </dependency>
复制代码

2.编写 controller

我们在 controller 中实现分页,首先判断前台是否传过来分页的入参,如果没有直接查询,如果 PageNum,PageSize 传了,直接使用 page = PageHelper.startPage()分页查询。也可以使用 Long total = page.getTotal();获取总条数。


public Result<*>(*VO *VO) {        Result<*> resultVO = new Result<>();        // 分页        Page page = new Page();        if (!CommonUtil.isEmpty(*VO.getPageNum()) && !CommonUtil.isEmpty(*VO.getPageSize())) {            page = PageHelper.startPage(*VO.getPageNum(), *VO.getPageSize());            resultVO.setPageNum(*VO.getPageNum());            resultVO.setPageSize(*VO.getPageSize());        }        // ASC是根据id 正向排序,DESC是反向排序        if (!CommonUtil.isEmpty(*VO.getOrder())) {            PageHelper.orderBy(*VO.getOrder());        }        // 业务查询 只有这一句是业务查询!!!        List<*VO> result = *Service.query(*VO);        // 分页总数封装        Long total = page.getTotal();        resultVO.setTotal(total);        // 实体封装        resultVO.setData(result );        return resultVO;    }
复制代码


这里有个坑,如果 controller 中有两个查询语句,那么第二个查询也会加上第一个的查询条件,如果有该情况,可以建立 service,然后分别调用。

3.service 层

很简单,没啥说的,普通的增删改查即可,这里不加以展示。#

4.配置类

需要在配置类中加入以下配置,helperDialect 根据数据库类型修改。


pagehelper:  helperDialect: mysql  reasonable: true  supportMethodsArguments: true  params: count=countSql
复制代码


然后我们直接调用接口就 ok 了,顺便说一下 pagehelper 是一种物理分页方式(拼接 liimit 到 sql),会直接在数据库中查询出想要的数据,而不是全部查询出来,然后在内存中再次截取,所以效率是比较好的。

用户头像

小黄鸡1992

关注

小黄鸡加油 2021.07.13 加入

一位技术落地与应用的博主,带你从入门,了解和使用各项顶流开源项目。

评论

发布
暂无评论
springboot整合pagehelper