前言
每次写一个项目的时候,如果涉及到分页,总会感觉写起来不舒服,通常需要在xml 里面写分页语句,还要写一个查询总数的语句,这样总感觉不是特别优雅。现在在网上找了个Mybatis分页插件,用着特别舒服,给大家介绍下。
PageHelper
作者是中国的一个的程序员,项目地址
https://git.oschina.net/free/Mybatis_PageHelper
使用方法
官网已经有详细的使用方法,这里简单介绍下如何整合SpringBoot+Mybatis.
其实很简单,他已经有了springboot 的start包,完全零配置。
1.引入依赖
<!--分页-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.3</version>
</dependency>
2.使用
在你需要分页调用mapper方法时
PageHelper.offsetPage(1, 10);
List<Country> list = countryMapper.selectIf(1);
获取总数total的方法
//count查询,返回一个查询语句的count数
long total = PageHelper.count(new ISelect() {
@Override
public void doSelect() {
countryMapper.selectLike(country);
}
});
个人感觉最简单优雅的方式是直接使用java8的lamda表达式直接获取一个完整的page对象,其中包括了 页数,条数等等详细信息代码如下
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> countryMapper.selectGroupBy());
返回值pageInfo大概是这样的
{
"endRow": 3,
"firstPage": 1,
"hasNextPage": true,
"hasPreviousPage": false,
"isFirstPage": false,
"isLastPage": false,
"lastPage": 2,
"list": [
//查询到的结果集
],
"navigateFirstPage": 1,
"navigateLastPage": 2,
"navigatePages": 8,
"navigatepageNums": [
1,
2
],
"nextPage": 1,
"pageNum": 0,
"pageSize": 3,
"pages": 2,
"prePage": 0,
"size": 3,
"startRow": 1,
"total": 6
}
可以看到是真的很简单和优雅。