JAVA8 分页工具

来源:互联网 发布:a卡表面格式优化 编辑:程序博客网 时间:2024/06/09 11:29

使用JAVA8的API可以实现分页,在数据量相对稳定的情况下,可以查出所有数据,配合缓存使用

import java.util.ArrayList;import java.util.List;import java.util.Optional;/** * @version 1.0 * @author levelmini * @param <T> */public class Page<T> {private int current_page;private int size;private int total_page; private int total_sum;private transient List<T> instanceList;//Gson不序列化transient字段private List<T> currentPageData;private transient Optional<List<T>> op;public Page(List<T> instanceList,int size) {this.size = size;setInstanceList(instanceList);}public int getCurrent_page() {return current_page;}public void setCurrent_page(int current_page) {this.current_page = current_page<1?1:current_page>this.total_page?this.total_page:current_page;setCurrentPageData(currentPageData());}public int getSize() {return size;}public void setSize(int size) {this.size = size;}public int getTotal_page() {return total_page;}public int getTotal_sum() {return total_sum;}public List<T> getInstanceList() {return instanceList;}public void setInstanceList(List<T> instanceList) {this.op= Optional.ofNullable(instanceList);this.instanceList = op.orElse(new ArrayList<T>());this.total_sum = this.instanceList.size();this.total_page =(int) Math.ceil(1.0*this.total_sum/this.size);}public void setCurrentPageData(List<T> currentPageData) {this.currentPageData = currentPageData;}public List<T> getCurrentPageData(){return this.currentPageData;}private List<T> currentPageData(){if(this.size==0 || this.total_page == 1){return this.instanceList;}List<T> currentPageData = new ArrayList<T>();instanceList.stream().skip((this.current_page-1)*this.size).limit(this.size).forEach(e->currentPageData.add(e));return currentPageData;}}

用法:

List<News> newsList = newsService.findAll();Page<News> page = new Page<>(newsList, size);page.setCurrent_page(current_page);return JsonUtil.toJson(page,"yyyy-MM-dd");


0 0