mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	add 增加分页工具
This commit is contained in:
		@@ -0,0 +1,128 @@
 | 
			
		||||
package com.ruoyi.common.core.page;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
			
		||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@Accessors(chain = true)
 | 
			
		||||
public class PagePlus<T,K> implements IPage<T> {
 | 
			
		||||
 | 
			
		||||
    protected List<T> records;
 | 
			
		||||
    protected List<K> recordsVo;
 | 
			
		||||
    protected long total;
 | 
			
		||||
    protected long size;
 | 
			
		||||
    protected long current;
 | 
			
		||||
    protected List<OrderItem> orders;
 | 
			
		||||
    protected boolean optimizeCountSql;
 | 
			
		||||
    protected boolean isSearchCount;
 | 
			
		||||
    protected boolean hitCount;
 | 
			
		||||
    protected String countId;
 | 
			
		||||
    protected Long maxLimit;
 | 
			
		||||
 | 
			
		||||
    public PagePlus() {
 | 
			
		||||
        this.records = Collections.emptyList();
 | 
			
		||||
        this.recordsVo = Collections.emptyList();
 | 
			
		||||
        this.total = 0L;
 | 
			
		||||
        this.size = 10L;
 | 
			
		||||
        this.current = 1L;
 | 
			
		||||
        this.orders = new ArrayList();
 | 
			
		||||
        this.optimizeCountSql = true;
 | 
			
		||||
        this.isSearchCount = true;
 | 
			
		||||
        this.hitCount = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus(long current, long size) {
 | 
			
		||||
        this(current, size, 0L);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus(long current, long size, long total) {
 | 
			
		||||
        this(current, size, total, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus(long current, long size, boolean isSearchCount) {
 | 
			
		||||
        this(current, size, 0L, isSearchCount);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus(long current, long size, long total, boolean isSearchCount) {
 | 
			
		||||
        this.records = Collections.emptyList();
 | 
			
		||||
        this.total = 0L;
 | 
			
		||||
        this.size = 10L;
 | 
			
		||||
        this.current = 1L;
 | 
			
		||||
        this.orders = new ArrayList();
 | 
			
		||||
        this.optimizeCountSql = true;
 | 
			
		||||
        this.isSearchCount = true;
 | 
			
		||||
        this.hitCount = false;
 | 
			
		||||
        if (current > 1L) {
 | 
			
		||||
            this.current = current;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.size = size;
 | 
			
		||||
        this.total = total;
 | 
			
		||||
        this.isSearchCount = isSearchCount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasPrevious() {
 | 
			
		||||
        return this.current > 1L;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasNext() {
 | 
			
		||||
        return this.current < this.getPages();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void recordsToVo(Class<K> kClass) {
 | 
			
		||||
        this.recordsVo = this.records.stream()
 | 
			
		||||
                .map(any -> BeanUtil.toBean(any, kClass))
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String countId() {
 | 
			
		||||
        return this.getCountId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long maxLimit() {
 | 
			
		||||
        return this.getMaxLimit();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus<T, K> addOrder(OrderItem... items) {
 | 
			
		||||
        this.orders.addAll(Arrays.asList(items));
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus<T, K> addOrder(List<OrderItem> items) {
 | 
			
		||||
        this.orders.addAll(items);
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<OrderItem> orders() {
 | 
			
		||||
        return this.getOrders();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean optimizeCountSql() {
 | 
			
		||||
        return this.optimizeCountSql;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean isSearchCount() {
 | 
			
		||||
        return this.total < 0L ? false : this.isSearchCount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PagePlus<T, K> setSearchCount(boolean isSearchCount) {
 | 
			
		||||
        this.isSearchCount = isSearchCount;
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package com.ruoyi.common.core.page;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
@@ -37,7 +38,7 @@ public class TableDataInfo<T> implements Serializable
 | 
			
		||||
     * @param list 列表数据
 | 
			
		||||
     * @param total 总记录数
 | 
			
		||||
     */
 | 
			
		||||
    public TableDataInfo(List<T> list, int total)
 | 
			
		||||
    public TableDataInfo(List<T> list, long total)
 | 
			
		||||
    {
 | 
			
		||||
        this.rows = list;
 | 
			
		||||
        this.total = total;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										101
									
								
								ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
package com.ruoyi.common.utils;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.hutool.http.HttpStatus;
 | 
			
		||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.ruoyi.common.core.page.PagePlus;
 | 
			
		||||
import com.ruoyi.common.core.page.TableDataInfo;
 | 
			
		||||
import com.ruoyi.common.utils.sql.SqlUtil;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 分页工具
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 */
 | 
			
		||||
public class PageUtils {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 当前记录起始索引
 | 
			
		||||
     */
 | 
			
		||||
    public static final String PAGE_NUM = "pageNum";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 每页显示记录数
 | 
			
		||||
     */
 | 
			
		||||
    public static final String PAGE_SIZE = "pageSize";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序列
 | 
			
		||||
     */
 | 
			
		||||
    public static final String ORDER_BY_COLUMN = "orderByColumn";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序的方向 "desc" 或者 "asc".
 | 
			
		||||
     */
 | 
			
		||||
    public static final String IS_ASC = "isAsc";
 | 
			
		||||
 | 
			
		||||
    public static <T, K> PagePlus<T, K> buildPagePlus() {
 | 
			
		||||
        Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM);
 | 
			
		||||
        Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE);
 | 
			
		||||
        String orderByColumn = ServletUtils.getParameter(ORDER_BY_COLUMN);
 | 
			
		||||
        String isAsc = ServletUtils.getParameter(IS_ASC);
 | 
			
		||||
        PagePlus<T, K> page = new PagePlus<>(pageNum, pageSize);
 | 
			
		||||
        if (StrUtil.isNotBlank(orderByColumn)) {
 | 
			
		||||
            String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
 | 
			
		||||
            if ("asc".equals(isAsc)) {
 | 
			
		||||
                page.addOrder(OrderItem.asc(orderBy));
 | 
			
		||||
            } else if ("desc".equals(isAsc)) {
 | 
			
		||||
                page.addOrder(OrderItem.desc(orderBy));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return page;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static <T> Page<T> buildPage() {
 | 
			
		||||
        Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM);
 | 
			
		||||
        Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE);
 | 
			
		||||
        String orderByColumn = ServletUtils.getParameter(ORDER_BY_COLUMN);
 | 
			
		||||
        String isAsc = ServletUtils.getParameter(IS_ASC);
 | 
			
		||||
        Page<T> page = new Page<>(pageNum, pageSize);
 | 
			
		||||
        if (StrUtil.isNotBlank(orderByColumn)) {
 | 
			
		||||
            String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
 | 
			
		||||
            if ("asc".equals(isAsc)) {
 | 
			
		||||
                page.addOrder(OrderItem.asc(orderBy));
 | 
			
		||||
            } else if ("desc".equals(isAsc)) {
 | 
			
		||||
                page.addOrder(OrderItem.desc(orderBy));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return page;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static <T, K> TableDataInfo<K> buildDataInfo(PagePlus<T, K> page) {
 | 
			
		||||
        TableDataInfo<K> rspData = new TableDataInfo<>();
 | 
			
		||||
        rspData.setCode(HttpStatus.HTTP_OK);
 | 
			
		||||
        rspData.setMsg("查询成功");
 | 
			
		||||
        rspData.setRows(page.getRecordsVo());
 | 
			
		||||
        rspData.setTotal(page.getTotal());
 | 
			
		||||
        return rspData;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static <T> TableDataInfo<T> buildDataInfo(Page<T> page) {
 | 
			
		||||
        TableDataInfo<T> rspData = new TableDataInfo<>();
 | 
			
		||||
        rspData.setCode(HttpStatus.HTTP_OK);
 | 
			
		||||
        rspData.setMsg("查询成功");
 | 
			
		||||
        rspData.setRows(page.getRecords());
 | 
			
		||||
        rspData.setTotal(page.getTotal());
 | 
			
		||||
        return rspData;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static <T> TableDataInfo<T> buildDataInfo(List<T> list) {
 | 
			
		||||
        TableDataInfo<T> rspData = new TableDataInfo<>();
 | 
			
		||||
        rspData.setCode(HttpStatus.HTTP_OK);
 | 
			
		||||
        rspData.setMsg("查询成功");
 | 
			
		||||
        rspData.setRows(list);
 | 
			
		||||
        rspData.setTotal(list.size());
 | 
			
		||||
        return rspData;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user