java 集合分页copy工具类

集合分页copy工具类 PageUtil

package com.sss.common.database.util;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sss.common.database.vo.PageVO;
import com.sss.common.util.BeanUtil;
import com.sss.common.vo.EsPageVO;
import jakarta.validation.constraints.NotNull;
import java.util.function.BiFunction;
import java.util.function.Consumer;

/**
 * date 2023/11/14
 */
public class PageUtil {
    @NotNull
    @SuppressWarnings("unused")
    public static Integer getPages(long total, Integer pageSize) {
        if (total == -1) {
            return 1;
        }
        if (pageSize > 0) {
            return (int) (total / pageSize + ((total % pageSize == 0) ? 0 : 1));
        }
        return 0;
    }
    @NotNull
    public static <S, T> PageVO<T> copyPage(Page<S> page, Class<T> tClass) {
        return copyPage(page, tClass, result -> {
        });
    }
    @NotNull
    public static <S, T> PageVO<T> copyPage(Page<S> page, Class<T> tClass, Consumer<T> consumer) {
        PageVO<T> pageVO = new PageVO<>();
        pageVO.setList(BeanUtil.copyList(page.getRecords(), tClass, consumer));
        pageVO.setPages((int) page.getPages());
        pageVO.setTotal(page.getTotal());
        return pageVO;
    }
    public static <S, T> PageVO<T> copyPage(Page<S> page, Class<T> tClass, BiFunction<S, T, T> function) {
        PageVO<T> pageVO = new PageVO<>();
        pageVO.setList(BeanUtil.copyList(page.getRecords(), tClass, function));
        pageVO.setPages((int) page.getPages());
        pageVO.setTotal(page.getTotal());
        return pageVO;
    }
    @NotNull
    public static <S, T> EsPageVO<T> esCopyPage(@NotNull EsPageVO<S> page, Class<T> tClass) {
        EsPageVO<T> pageVO = new EsPageVO<>();
        pageVO.setList(BeanUtil.copyList(page.getList(), tClass));
        pageVO.setPages(page.getPages());
        pageVO.setTotal(page.getTotal());
        return pageVO;
    }
}

PageVO实体

package com.sss.common.database.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.compress.utils.Lists;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * date 2023/11/14
 */
@Data
public class PageVO<T> implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "总页数")
    private Integer pages;
    @Schema(description = "总条目数")
    private Long total;
    @Schema(description = "结果集")
    private List<T> list;
    public PageVO() {
        this.pages = 0;
        this.total = 0L;
        this.list = Lists.newArrayList();
    }
    public PageVO(Integer pages, Long total, List<T> list) {
        this.pages = pages;
        this.total = total;
        this.list = list;
    }
    public PageVO(Long pages, Long total, List<T> list) {
        this.pages = BigDecimal.valueOf(pages).intValue();
        this.total = total;
        this.list = list;
    }

}

BeanUtil 实体

package com.sss.common.util;
import jakarta.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Consumer;

/**
 * date 2023/11/14 16:24
 */
public class BeanUtil extends cn.hutool.core.bean.BeanUtil {

    /**
     * 数据拷贝
     */
    @Nullable
    public static <S, T> T copyProperties(S source, Class<T> tClass, BiFunction<S, T, T> function) {
        T t = copyProperties(source, tClass);
        if (t != null && function != null) {
            t = function.apply(source, t);
        }
        return t;
    }

    /**
     * 数据拷贝
     */
    public static <S, T> T copyProperties(S source, Class<T> tClass, @Nullable Consumer<T> consumer) {
        T t = copyProperties(source, tClass);
        if (t != null && consumer != null) {
            consumer.accept(t);
        }
        return t;
    }
    /**
     * 集合数据拷贝
     */
    public static <S, T> List<T> copyList(List<S> sources, Class<T> tClass) {
        return copyList(sources, tClass, result -> {
        });
    }

    /**
     * 集合数据拷贝
     */
    public static <S, T> List<T> copyList(List<S> sources, Class<T> tClass, @Nullable Consumer<T> consumer) {
        return copyList(sources, tClass, (src, target) -> {
            if (consumer != null) {
                consumer.accept(target);
            }
            return target;
        });
    }

    /**
     * 集合数据拷贝
     */
    public static <S, T> List<T> copyList(@Nullable List<S> sources, Class<T> tClass, BiFunction<S, T, T> function) {
        if (sources == null) {
            return null;
        }
        if (sources.isEmpty()) {
            return new ArrayList<>();
        }
        List<T> list = new ArrayList<>(sources.size());
        sources.forEach(src -> {
            T t = copyProperties(src, tClass, function);
            list.add(t);
        });
        return list;
    }
}

EsPageVO 实体

package com.sss.common.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * @author lisong
 */
@Data
public class EsPageVO<T> implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    @Schema(description = "总页数")
    private Integer pages;

    @Schema(description = "总条目数")
    private Long total;

    @Schema(description = "结果集")
    private List<T> list;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

01传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值