java对list进行分页查询

java对list进行分页查询

平时都是使用公司封装的工具类进行分类,发现有些地方无法应用,所以就使用了一个新的工具类

一、工具类 ListPageUtil

package com.dftr.tkaq.common.utils;


import java.util.Collections;
import java.util.List;


public class ListPageUtil<T> {
    private List<T> data;

    /** 上一页 */
    private int lastPage;

    /** 当前页 */
    private int currentPage;

    /** 下一页 */
    private int nextPage;
//
    /** 每页条数 */
    private int pageSize;

    /** 总页数 */
    private int totalPage;

    /** 总数据条数 */
    private int totalCount;

    public ListPageUtil(List<T> data, int currentPage, int pageSize) {
        if (data == null || data.isEmpty()) {
            throw new IllegalArgumentException("data must be not empty!");
        }

        this.data = data;
        this.pageSize = pageSize;
        this.currentPage = currentPage;
        this.totalCount = data.size();
        this.totalPage = (totalCount + pageSize - 1) / pageSize;
        this.lastPage = currentPage-1>1? currentPage-1:1;
        this.nextPage = currentPage>=totalPage? totalPage: currentPage + 1;

    }

    /**
     * 得到分页后的数据
     * @return 分页后结果
     */
//    public List<T> getPagedLst() {
//        int fromIndex = (nowPage - 1) * pageSize;
//        if (fromIndex >= data.size()) {
//            return Collections.emptyList();//空数组
//        }
//        if(fromIndex<0){
//            return Collections.emptyList();//空数组
//        }
//        int toIndex = nowPage * pageSize;
//        if (toIndex >= data.size()) {
//            toIndex = data.size();
//        }
//        return data.subList(fromIndex, toIndex);
//    }

    public int getPageSize() {
        return pageSize;
    }

    public List<T> getData() {
        int fromIndex = (currentPage - 1) * pageSize;
        if (fromIndex >= data.size()) {
            return Collections.emptyList();//空数组
        }
        if(fromIndex<0){
            return Collections.emptyList();//空数组
        }
        int toIndex = currentPage * pageSize;
        if (toIndex >= data.size()) {
            toIndex = data.size();
        }
        return data.subList(fromIndex, toIndex);
    }
    public int getLastPage() {
        return lastPage;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public int getNextPage() {
        return nextPage;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public int getTotalCount() {
        return totalCount;
    }
}

二、使用方式

new ListPageUtil<>(responseList, request.getPageNum(), request.getPageSize())

参数1:需要进行分页的数据
参数2:页码
参数3:每页数量

        ListPageUtil<QueryCoursewareResponse> queryCoursewareResponseListPageUtil= new ListPageUtil<>(responseList, request.getPageNum(), request.getPageSize());
        List<QueryCoursewareResponse> data= queryCoursewareResponseListPageUtil.getData();
//        PageHelper.startPage(request.getPageNum(),request.getPageSize());
//        PageInfo<QueryCoursewareResponse> queryCoursewareResponsePageInfo= new PageInfo<>(responseList);
        Page page= new Page();
        page.setPageData(data);
        page.setTotalSize(Integer.valueOf(queryCoursewareResponseListPageUtil.getTotalCount()));
        return page;

Page

package com.dftr.tkaq.system.facade.response.login;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Page<T> {

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

    @Schema(description = "装载数据")
    private T pageData;



}

使用其他方法可参考工具类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值