欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot集成分页插件PageHelper

程序员文章站 2022-05-25 19:02:09
...

1 引入依赖

#本次测试用的springboot版本为2.1.5.RELEASE,其他版本自测
#
       <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
        </dependency>

2 写代码

public PageInfo  findItemByPage(Map<String,Object> queryMap,int currentPage,int pageSize) {
          //设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的查询方法执行之前设置该分页信息】
        PageHelper.startPage(currentPage, pageSize);
        //mapper接口中的查询方法执行
        List<Item> itemsList = itemMapper.findItem(queryMap);
        //PageInfo 是 pagehelper中内值的分页的信息类
        PageInfo<Item> info=new PageInfo<>(itemsList);
        // 返回值是 PageInfo
        return info;  
    }

3 返回值

#在2中的返回值结构  PageInfo<Employee> info=new PageInfo<>(itemsList);
{
    "navigatepageNums":Array[8],  //所有导航页号
    "startRow":1,  //当前页面第一个元素在数据库中的行号
     "endRow":3,  //当前页面最后一个元素在数据库中的行号
    "hasNextPage":true,  //是否有下一页
    "prePage":0,  //前一页
    "nextPage":2,  //
    "pageSize":3,  //每页的数量
    "list":Array[3],  //结果集(每页显示的数据)
    "pageNum":1,  //当前页
    "navigatePages":8,  //导航页码数
    "navigateFirstPage":1,  //
    "total":65,  //总记录数
    "pages":22,  //总页数
    "size":3,  //当前页的数量
    "isLastPage":false,  //是否为最后一页
    "hasPreviousPage":false,  //是否有前一页
    "navigateLastPage":8,  //
    "isFirstPage":true  //是否第一页
}

4遇到的坑

  • 结果集,不分页的问题:很有可能startPage下有两个查询结果集,如下代码;
public PageInfo  findItemByPage(Map<String,Object> queryMap,int currentPage,int pageSize) {
          //设置分页信息,分别是当前页数和每页显示的总记录数
          //【记住:必须在mapper接口中的查询方法执行之前设置该分页信息】
          //只对其后的第一个查询有效
        PageHelper.startPage(currentPage, pageSize);
       
        List<Item> itemsList = itemMapper.findItem(queryMap);    // 执行分页查询
        
        List<Item> itemsList2 = itemMapper.findItem(queryMap);   // 不会执行分页查询(即使把itemsList2 加入PageInfo 中也不会出现分页情况)
        
       
        PageInfo<Item> info=new PageInfo<>(itemsList);
        
        return info;  
    }
相关标签: 经验之谈