spring boot 业务数据分页(不能直接用mybatis 分页插件分页)用Java 8 stream 快速实现

目录标题

一、适用范围

这种方式适用于数据量较少的情况。如果数据量太大,一下子放到内存,可能内存吃不消。

二、利用 Java 8 的 stream 流提供的skip() 和 limit()方法

java 复制代码
public TableDataInfo getTrajectory(Integer pageNum, Integer pageSize) {
        List<T> list= iService.getData();
        if (pageNum == null || pageSize == null) {
            pageNum = 1;
            pageSize = 5;
        }
        List<T> collect = list.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
        TableDataInfo tableDataInfo = new TableDataInfo(collect, trajectory.size());
        return tableDataInfo;
    }
java 复制代码
public class TableDataInfo implements Serializable {
    private static final long serialVersionUID = 1L;

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

    /**
     * 列表数据
     */
    private Object rows;


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

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

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

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

    public long getTotal() {
        return total;
    }

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

    public Object getRows() {
        return rows;
    }

    public void setRows(Object 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;
    }
}

三、一般还需要对数据进行排序

利用集合的sort()方法,然后重新比较器

用java 8 的lamda表达式快速实现

java 复制代码
List<T> list= getData();
list.sort((f, s) -> {
			//第一个大于,第二个返回-1 降序
            if (f>s) {
                return -1;
            }
             if (f==s) {
                return 0;
            }
            return 1;
        });
相关推荐
qq_12498707531 小时前
重庆三峡学院图书资料管理系统设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·spring·毕业设计
大学生资源网2 小时前
java毕业设计之“知语”花卉销售网站的设计与实现源码(源代码+文档)
java·mysql·毕业设计·源码·springboot
小鸡脚来咯2 小时前
Redis三大问题:穿透、击穿、雪崩(实战解析)
java·spring·mybatis
桦说编程2 小时前
并发编程高级技巧:运行时检测死锁,告别死锁焦虑
java·后端·性能优化
jiayong232 小时前
Spring AI Alibaba 深度解析(三):实战示例与最佳实践
java·人工智能·spring
梁同学与Android2 小时前
Android ---【经验篇】ArrayList vs CopyOnWriteArrayList 核心区别,怎么选择?
android·java·开发语言
ss2732 小时前
从零实现线程池:自定义线程池的工作线程设计与实现
java·开发语言·jvm
苗壮.2 小时前
CommandLineRunner 是什么?
java
石工记2 小时前
windows 10直接安装多个JDK
java·开发语言
菜鸟233号2 小时前
力扣669 修剪二叉搜索树 java实现
java·数据结构·算法·leetcode