mybatis的分页插件pagehelper

 

  • pom.xml 
        <!-- mybatis的分页插件pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
  • application.properties
# pagehelper properties
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
  • Java
//currentPage 当前页页码
//pageSize 一页展示多少条
public PageInfo getList(Integer currentPage,Integer pageSize){
	PageHelper.startPage(currentPage,pageSize);
	List<Test> list = testService.getList();
	PageInfo<Test> testPageInfo = new PageInfo<>(list);
	return testPageInfo;
}
  • 分页效果
{
    "total": 10,
    "list": [{
        "id": 1,
        "name": "xxxx",
        "age": 11
    }, {
        "id": 2,
        "name": "xxxx",
        "age": 11
    }],
    "pageNum": 1,
    "pageSize": 2,
    "size": 2,
    "startRow": 1,
    "endRow": 2,
    "pages": 5,
    "prePage": 0,
    "nextPage": 2,
    "isFirstPage": true,
    "isLastPage": false,
    "hasPreviousPage": false,
    "hasNextPage": true,
    "navigatePages": 8,
    "navigatepageNums": [1, 2, 3, 4, 5],
    "navigateFirstPage": 1,
    "navigateLastPage": 5,
    "firstPage": 1,
    "lastPage": 5
}
  •  pageInfo中的成员变量说明
       //当前页 
·      private int pageNum;  
·      //每页的数量  
·      private int pageSize;  
·      //当前页的数量  
·      private int size;  
·      //由于startRow和endRow不常用,这里说个具体的用法  
·      //可以在页面中"显示startRow到endRow 共size条数据"  
·    
·      //当前页面第一个元素在数据库中的行号  
·      private int startRow;  
·      //当前页面最后一个元素在数据库中的行号  
·      private int endRow;  
·      //总记录数  
·      private long total;  
·      //总页数  
·      private int pages;  
·      //结果集  
·      private List<T> list;  
·    
·      //第一页  
·      private int firstPage;  
·      //前一页  
·      private int prePage;  
·    
·      //是否为第一页  
·      private boolean isFirstPage = false;  
·      //是否为最后一页  
·      private boolean isLastPage = false;  
·      //是否有前一页  
·      private boolean hasPreviousPage = false;  
·      //是否有下一页  
·      private boolean hasNextPage = false;  
·      //导航页码数  
·      private int navigatePages;  
·      //所有导航页号  
·      private int[] navigatepageNums;  
  • 遇到问题(深坑):

当数据库表内数据比较少时,比如只有6条数据,使用pageHelper进行分页查询时,一页10条,当查询第二页内容时返回数据依然是这6条数据,不管页码超出多少一直都会返回数据

  • 原因:

pageHelper里面自带的一个功能,叫做reasonable分页参数合理化,3.3.0以上版本可用,默认是false。 

当reasonable=true时在pageNum<1会查询第一页,如果pageNum>pages会查询最后一页

也就是说当pageNum>你的最大页数时会返回最后一页的数据而不是返回null

禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据

  • 解决办法:

#禁用reasonable分页参数合理化
pagehelper.reasonable=false

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值