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;
        });
相关推荐
沉默GAVIN5 分钟前
How Apps Communicate with ActivityManagerService
java
k***459910 分钟前
SpringBoot中如何手动开启事务
java·spring boot·spring
帅得不敢出门12 分钟前
Android8 Framework实现Ntp服务器多域名轮询同步时间
android·java·服务器·python·framework·github
汤姆yu12 分钟前
基于springboot+ai的健康管理系统
人工智能·spring boot·后端
阿杰同学15 分钟前
Java NIO 面试题及答案整理,最新面试题
java·开发语言·nio
没有bug.的程序员27 分钟前
GC日志解析:从日志看全流程
java·网络·jvm·spring·日志·gc
WZTTMoon28 分钟前
开发中反复查的 Spring Boot 注解,一次性整理到位
java·spring boot·后端
长沙古天乐30 分钟前
Spring Boot应用中配置消费端随服务启动循环消费消息
spring boot·后端·linq
葡萄城技术团队31 分钟前
Excel 文件到底是怎么坏掉的?深入 OOXML 底层原理讲解修复策略
android·java·excel
照物华36 分钟前
MySQL 软删除 (Soft Delete) 与唯一索引 (Unique Constraint) 的冲突与解决
java·mysql