这篇文章将为大家详细讲解有关使用JAVA8中API实现分页的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
使用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");
关于使用JAVA8中API实现分页的案例就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。