使用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的分页工具的详细内容。