天天看點

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