分页插件pagehelper 使用

博客介绍了在Spring Boot和Java环境下实现分页功能的方法。包括导入maven依赖、配置yml文件、编写工具类,最后说明分页查询时调用PageUtils.startPage()即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、导入maven依赖

 <!-- pagehelper 分页插件 -->
 <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.4.1</version>
 </dependency>

二、配置yml

# PageHelper分页插件
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true
  params: count=countSql

三、编写工具类


/**
 * 分页工具类
 *
 * @author lihua
 */
public class PageUtils extends PageHelper {

    private static Page page;

    /**
     * 设置请求分页数据
     */
    public static void startPage(Integer pageNum, Integer pageSize, String orderBy) {
        if (!Objects.isNull(pageNum) && !Objects.isNull(pageSize)) {
            page = PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(true);
        }
    }
    public static TableDataInfo getDataTable(List<?> list) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(0);
        rspData.setRows(list);
        rspData.setTotal(page.getTotal());
        return rspData;
    }
}

/**
 * 表格分页数据对象
 *
 * @author lihua
 */
public class TableDataInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    private long total;

    /**
     * 列表数据
     */
    private List<?> rows;

    /**
     * 消息状态码
     */
    private int code;

    /**
     * 消息内容
     */
    private String msg;

    /**
     * 表格数据对象
     */
    public TableDataInfo() {
    }

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<?> list, int total) {
        this.rows = list;
        this.total = total;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List<?> getRows() {
        return rows;
    }

    public void setRows(List<?> rows) {
        this.rows = rows;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

四、使用

分页,那个查询需要分页就调用
PageUtils.startPage();

/**
     * 查询设备列表
     *
     * @param device 设备
     * @return 设备
     */
    @Override
    public TableDataInfo selectDeviceList(Device device, User user) {
        //获取用户所在的客户,以及所有的子客户
        List<Long> clientIds = getClientIds(user);
        //分页,那个查询需要分页就调用
        PageUtils.startPage();
        List<Device> devices = deviceMapper.selectDeviceByClientId(device, clientIds);
        List<Device> devices1 = devices.stream().peek(d -> {
            if (d.getPositionLast() == null || d.getPositionLast().getGpstime() == null) {
                d.setDeviceStatus(0);
                return;
            }
            //判断是否离线,10分钟没有更新gps定位时间就是离线
            if (d.getPositionLast().getGpstime().getTime() + (10 * 60 * 1000) < System.currentTimeMillis()) {
                d.setDeviceStatus(2);
            } else {
                d.setDeviceStatus(1);
            }
        }).collect(Collectors.toList());
        return PageUtils.getDataTable(devices1);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值