SpringBoot整合PageHelper

PageHelper官方地址
在项目开发中,我们经常会遇到有关分页的问题,当我们使用Mybatis进行数据库操作时,使用pagehelper帮助我们进行分页是极其的简单。
那么pagehelper如何搭配SpringBoot使用,这就是接下来要解决的问题。

1、添加Maven依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

如果你想要最新的版本,可以去官方地址获取相应的依赖版本。

2、查询数据库

@Repository
@Mapper
public interface TopicDao {
	/**
	 * 查询所有
	 * @return
	 */
	@Select("SELECT * FROM xt_topic")
	List<Topic> findAllTopic();
}

这与你单独使用Mybatis不进行分页的查询一致,无需修改。

2、使用PageHelper分页

    /**
     * 
     * @param pageNum  当前页
     * @param pageSize  页的大小
     * @return
     */
    public Result findAllTopicByPage(int pageNum, int pageSize) {
        Result result = new Result();
        PageHelper.startPage(pageNum, pageSize);
        try {
            List<Topic> topicList = topicDao.findAllTopic();
            PageInfo<Topic> pageInfo = new PageInfo<Topic>(topicList);
            result.setCode(StatusCode.OK);
            result.setMessage("查询成功!");
            // result.setData(topicList);
            result.setData(pageInfo);
            return result;
        }catch (Exception e){
            e.printStackTrace();
            result.setFlag(false);
            result.setMessage("出错了!");
            return result;
        }
    }

上面代码中,Result相关的代码与PageHelper无关。PageHelper相关的代码主要是 PageHelper.startPage(pageNum, pageSize);,执行了这句代码之后,再调用findAllTopic方法进行查询,获取到的结果就是分页后的List——包含pageSize个Topic的List。

[
            {
                "tpId": 1,
                "tpAuthor": "XXX",
                "tpTitle": "你好,四月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-12T03:09:02.000+00:00",
                "updateTime": "2021-03-12T03:09:02.000+00:00"
            },
            {
                "tpId": 2,
                "tpAuthor": "XXX",
                "tpTitle": "你好,五月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-12T03:17:31.000+00:00",
                "updateTime": "2021-03-12T03:17:31.000+00:00"
            },
            {
                "tpId": 3,
                "tpAuthor": "XXXX",
                "tpTitle": "你好,五月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-13T02:51:13.000+00:00",
                "updateTime": "2021-03-13T02:51:13.000+00:00"
            },
            {
                "tpId": 4,
                "tpAuthor": "XXXX",
                "tpTitle": "你好,五月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-13T02:51:13.000+00:00",
                "updateTime": "2021-03-13T02:51:13.000+00:00"
            }
        ]

如果使用PageInfo进行分页的封装,那么需要执行PageInfo<Topic> pageInfo = new PageInfo<Topic>(topicList);

        "total": 12,
        "list": [
            {
                "tpId": 1,
                "tpAuthor": "XXX",
                "tpTitle": "你好,四月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-12T03:09:02.000+00:00",
                "updateTime": "2021-03-12T03:09:02.000+00:00"
            },
            {
                "tpId": 2,
                "tpAuthor": "XXX",
                "tpTitle": "你好,五月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-12T03:17:31.000+00:00",
                "updateTime": "2021-03-12T03:17:31.000+00:00"
            },
            {
                "tpId": 3,
                "tpAuthor": "XXXX",
                "tpTitle": "你好,五月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-13T02:51:13.000+00:00",
                "updateTime": "2021-03-13T02:51:13.000+00:00"
            },
            {
                "tpId": 4,
                "tpAuthor": "XXXX",
                "tpTitle": "你好,五月",
                "tpContent": "新的一个月,安好。",
                "createTime": "2021-03-13T02:51:13.000+00:00",
                "updateTime": "2021-03-13T02:51:13.000+00:00"
            }
        ],
        "pageNum": 1,
        "pageSize": 4,
        "size": 4,
        "startRow": 1,
        "endRow": 4,
        "pages": 3,
        "prePage": 0,
        "nextPage": 2,
        "isFirstPage": true,
        "isLastPage": false,
        "hasPreviousPage": false,
        "hasNextPage": true,
        "navigatePages": 8,
        "navigatepageNums": [
            1,
            2,
            3
        ],
        "navigateFirstPage": 1,
        "navigateLastPage": 3

两者的区别就是PageInfo封装后,会帮助我们添加更多的信息。而如果不使用PageInfo进行封装,那得到的就仅仅是一个List。

上一篇:PageHelper分页时超过最大数量的页数仍然返回数据,PageHelper分页失效


下一篇:Spring Boot整合Mybatis及PageHelper实现分页查询