SpringBoot集成分页插件PageHelper

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;  
    }

还可以这样用lambda表达式写法

  PageInfo<RecruitOrgDO> pageInfo = PageHelper
                .startPage(request.getPageNum(), request.getPageSize())
                .doSelectPageInfo(() -> recruitOrgService.selectLikeName(request.getName()));

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;  
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值