欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-11 17:54:31
import java.util.arrays; import java.util.collections; import java.util.list;...
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数据库,缺点是这种方法不适用于大批量数据。

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