自定义分页
前言
近期有个稍微复杂点的需求,但是框架中不支持复杂SQL的分页,换框架也来不及,最后想到使用Java8的Stream来做一个自定义分页。(前提是数据量小的情况下,不建议长时间使用,偶尔应急可以用一下)
一、定义分页类
public class Page implements Serializable {
private Integer pageSize =10;
private Integer pageIndex =1;
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getPageIndex() {
return pageIndex;
}
public void setPageIndex(Integer pageIndex) {
this.pageIndex = pageIndex;
}
public int getStart(){
return (pageIndex - 1) * pageSize;
}
二、使用Stream流
List<User> users = userList.stream() //首先将从数据库中查到的数据转为流
.skip(page.getStart()) //使用skip()函数,这个函数的意思为跳过。需保证每次从数据库中查询的数据顺序一致。
.limit(page.getPageSize()) // limit代表从第1位获取至 page.getPageSize位
.collect(Collectors.toList());// 转为一个集合