天天看点

PageHelper使用简化

原先项目中分页都是自己手写的,现引用PageHelper工具;

maven引用如下:

<dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>
        <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>
           

在网上也翻看了很多例子,大部分代码都是先分页,然后再查询列表,2行代码,如下:

PageHelper.startPage(pageNumber,pageSize);
List<Map> list =portalMapper.queryLunboList(language);
PageInfo<Map> pageInfo = new PageInfo<>(list);
           

看着有些麻烦,可以写个工具类简化成一行;

用到了jdk1.8中函数编程Supplier,代码如下:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.function.Supplier;

/**
 * 分页工具类
 */
public class PageUtils {
    public static PageInfo generatePage(Supplier<List> supplier, int pageNum, int pageSize){
        PageHelper.startPage(pageNum,pageSize);
        List list = supplier.get();
        return new PageInfo(list);
    }
}
           

然后引用就方便多了,如下示例:

@Override
    public PageInfo<Map> getUserList(Map params, Integer pageNum, Integer pageSize) {
        return PageUtils.generatePage(()->indexMapper.getUserList(params),pageNum,pageSize);
    }