当前位置: 移动技术网 > IT编程>开发语言>Java > java分页之假分页实现简单的分页器

java分页之假分页实现简单的分页器

2019年07月22日  | 移动技术网IT编程  | 我要评论
import java.util.arrays; 
import java.util.collections; 
import java.util.list; 
 
/** 
 * @author shuang.gao date: 2016/1/28 time: 12:26 
 */ 
public class pager<t> { 
 
  /** 
   * 每页显示条数 
   */ 
  private int pagesize; 
  /** 
   * 原集合 
   */ 
  private list<t> data; 
 
  private pager(list<t> data, int pagesize) { 
    if (data == null || data.isempty()) { 
      throw new illegalargumentexception("data must be not empty!"); 
    } 
 
    this.data = data; 
    this.pagesize = pagesize; 
  } 
 
  /** 
   * 创建分页器 
   * 
   * @param data 需要分页的数据 
   * @param pagesize 每页显示条数 
   * @param <t> 业务对象 
   * @return 分页器 
   */ 
  public static <t> pager<t> create(list<t> data, int pagesize) { 
    return new pager<>(data, pagesize); 
  } 
 
  /** 
   * 得到分页后的数据 
   * 
   * @param pagenum 页码 
   * @return 分页后结果 
   */ 
  public list<t> getpagedlist(int pagenum) { 
    int fromindex = (pagenum - 1) * pagesize; 
    if (fromindex >= data.size()) { 
      return collections.emptylist(); 
    } 
 
    int toindex = pagenum * pagesize; 
    if (toindex >= data.size()) { 
      toindex = data.size(); 
    } 
    return data.sublist(fromindex, toindex); 
  } 
 
  public int getpagesize() { 
    return pagesize; 
  } 
 
  public list<t> getdata() { 
    return data; 
  } 
 
  public static void main(string[] args) { 
    integer[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; 
    list<integer> list = arrays.aslist(array); 
 
    pager<integer> pager = pager.create(list, 10); 
 
    list<integer> page1 = pager.getpagedlist(1); 
    system.out.println(page1); 
 
    list<integer> page2 = pager.getpagedlist(2); 
    system.out.println(page2); 
 
    list<integer> page3 = pager.getpagedlist(3); 
    system.out.println(page3); 
  } 
} 

假分页,顾名思义,不是真正的在数据库里进行过滤,而是从数据库查询之后,取得全部结果,在展现的时候做些手脚。
import java.util.arrays; 
import java.util.collections; 
import java.util.list; 
 
/**
 * @author shuang.gao  date: 2016/1/28 time: 12:26
 */ 
public class pager<t> { 
 
    /**
     * 每页显示条数
     */ 
    private int pagesize; 
    /**
     * 原集合
     */ 
    private list<t> data; 
 
    private pager(list<t> data, int pagesize) { 
        if (data == null || data.isempty()) { 
            throw new illegalargumentexception("data must be not empty!"); 
        } 
 
        this.data = data; 
        this.pagesize = pagesize; 
    } 
 
    /**
     * 创建分页器
     *
     * @param data 需要分页的数据
     * @param pagesize 每页显示条数
     * @param <t> 业务对象
     * @return 分页器
     */ 
    public static <t> pager<t> create(list<t> data, int pagesize) { 
        return new pager<>(data, pagesize); 
    } 
 
    /**
     * 得到分页后的数据
     *
     * @param pagenum 页码
     * @return 分页后结果
     */ 
    public list<t> getpagedlist(int pagenum) { 
        int fromindex = (pagenum - 1) * pagesize; 
        if (fromindex >= data.size()) { 
            return collections.emptylist(); 
        } 
 
        int toindex = pagenum * pagesize; 
        if (toindex >= data.size()) { 
            toindex = data.size(); 
        } 
        return data.sublist(fromindex, toindex); 
    } 
 
    public int getpagesize() { 
        return pagesize; 
    } 
 
    public list<t> getdata() { 
        return data; 
    } 
 
    public static void main(string[] args) { 
        integer[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; 
        list<integer> list = arrays.aslist(array); 
 
        pager<integer> pager = pager.create(list, 10); 
 
        list<integer> page1 = pager.getpagedlist(1); 
        system.out.println(page1); 
 
        list<integer> page2 = pager.getpagedlist(2); 
        system.out.println(page2); 
 
        list<integer> page3 = pager.getpagedlist(3); 
        system.out.println(page3); 
    } 

这是一个简单的分页器,原理很简单,将从数据库查询的数据,传入到分页器里,返回的是分好页的集合。
优点是兼容所有jdbc数据库,缺点是这种方法不适用于大批量数据。

以上就是本文的全部内容,希望对大家的学习有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网