JAVA8的分页工具

内容摘要
使用JAVA8的API可以实现分页,在数据量相对稳定的情况下,可以查出所有数据,配合缓存使用import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/*
文章正文

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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;
    }
}

用法:

1
2
3
4
List<News> newsList = newsService.findAll();
Page<News> page = new Page<>(newsList, size);
page.setCurrent_page(current_page);
return JsonUtil.toJson(page,"yyyy-MM-dd");
代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!