参考了http://www.iteye.com/article/14657?page=3#comments文章中的PaginationSupport类实现,略微扩展了一下。
import java.util.List;
/**
* ps.getItems()得到已分页好的结果集
* ps.getIndexes()得到分页索引的数组
* ps.getTotalCount()得到总结果数
* ps.getStartIndex()当前分页索引
* ps.getNextIndex()下一页索引
* ps.getPreviousIndex()上一页索引
* @see http://www.iteye.com/article/14657?page=3#comments
*/
public class PageSupport {
public final static int PAGESIZE = 30;
private int pageSize = PAGESIZE;
private List items;
private int totalCount;
private int[] indexes = new int[0];
private int startIndex = 0;
public PageSupport(List items, int totalCount) {
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
setStartIndex(0);
}
public PageSupport(List items, int totalCount, int startIndex) {
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
public PageSupport(List items, int totalCount, int pageSize, int startIndex) {
setPageSize(pageSize);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
if (totalCount > 0) {
this.totalCount = totalCount;
// 81/10 = 8
int count = totalCount / pageSize;
if (totalCount % pageSize > 0)
count++;
indexes = new int[count];
for (int i = 0; i < count; i++) {
indexes[i] = pageSize * i;
}
} else {
this.totalCount = 0;
}
}
public int[] getIndexes() {
return indexes;
}
public void setIndexes(int[] indexes) {
this.indexes = indexes;
}
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
if (totalCount <= 0)
this.startIndex = 0;
else if (startIndex >= totalCount)
this.startIndex = indexes[indexes.length - 1];
else if (startIndex < 0)
this.startIndex = 0;
else {
this.startIndex = indexes[startIndex / pageSize];
}
}
public int getNextIndex() {
int nextIndex = getStartIndex() + pageSize;
if (nextIndex >= totalCount)
return getStartIndex();
else
return nextIndex;
}
public int getPreviousIndex() {
int previousIndex = getStartIndex() - pageSize;
if (previousIndex < 0)
return 0;
else
return previousIndex;
}
//--------------------------------------------------------------
/**
* 末页索引
*/
public int getLastIndex(){
return getIndexes()[getIndexes().length-1];
}
/**
* 分页总数
*/
public int getTotalPageNum(){
return getIndexes().length;
}
/**
* 获得当前页码
*/
public int getCurrentPageNum(){
int[] indexs = getIndexes();
int startIndex = getStartIndex();
int i=0;
for(i=0;i<indexs.length;i++){
if(startIndex == indexs[i])
break;
}
return (i+1);
}
/**
* 根据页码获得分页索引值 pagenum>=1
*/
public int getIndexByPageNum(int pagenum){
if(pagenum<=1)
return 0;
if(pagenum>getTotalPageNum())
return getLastIndex();
return getIndexes()[pagenum-1];
}
public boolean hasPreviousPage(){
return getStartIndex()==0?false:true;
}
public boolean hasNextPage(){
return (getCurrentPageNum() == getTotalPageNum())?false:true;
}
private String queryString = null;
public String getQueryString() {
return queryString;
}
public void setQueryString(String queryString) {
this.queryString = queryString;
}
}
分享到:
相关推荐
Descript: ASP分页类,支持access/mssql/mysql/sqlite Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com WebSite: http://www.yehe.org http://www.showo.com Licenses: 本程序遵循GPL协议. 协议原文地址:...
该分页系他人书写,本人修改! 附带详细使用方法 以及函数说明!可直接用于php项目 !支持多种分页方式!
php完美分页类,支持无限分页,简洁大气样式,包你好用
Descript: ASP分页类,支持access/mssql/mysql/sqlite Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com WebSite: http://www.yehe.org http://www.showo.com -----------------------------------------...
自定义php分页类,支持纯php,tp3.2,tp5.0,使用时只需引入分页类,按照demo编写即可
自己写的一个php分页类,支持mysql和mysqli两种数据库类型,分页条数可以控制,采用一面向对象的方式写的,调用方法即可以用
可以将一个已经生成的html表格转化成可分页和查询的表格 完全用js实现不涉及任何后台技术,不支持ajax。
这是一个简单的PHP分页显示类,目前支持两种分页模式。一种是最简单的普通分页模式[首页] [上页] [下页] [尾页]模式,另一种是经典分页模式,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]。 使用方法 ...
一个用于MVC分页的工具类,支持HTML分页,AJAX分页,Microsoft Ajax分页
php 分页类源码,包含了多种样式,简单易用,支持ajax
不错超强的Php分页类,支持ajax,不错超强的Php分页类,支持ajax,
阿里上找的PHP分页类。调用方便。支持20多种样式。
这是一个PHP的分页类,支持多种分类方式,使用方法在文件内。
这个分页类是我收集到的PHP分页类效率最高的,并且它还支持图片的形势,本人测试通过完全可用!
非常好用的分页类,很容易定制各种风格,可以与网上流行的 《24款超实用的Web 2.0风格翻页页码css代码》 完美无缝连接。你所做的,就是改个div的名字而已。另外懂点儿CSS的朋友甚至可以轻松实现仿Google的翻页样式。
PHP分页类,使用方便, 避免在页面上分页那样不能做到样式和外观上一改全改的弱点。 这次经过本人修改,可以支持URL、POST两种: 对于页面需要速度的,用URL分页会更快一些。对于页面查询条件较多,而且查询条件是...
仿aspnetpager的一个php分页类 有以下几个简单的功能: 1:支持相关按钮的显示与否配置 2:支持每页数目,文本名称,html标签类名称的自由配置 3:支持url重写过的页面(需自己在配置数组中添加重写规则)
支持多风格变换的ASP分页类
Access分页帮助类。此工具很好的支持Access翻页功能。
但是我用过的几个控件,本身都要执行SQL,对存储过程支持不好,为了方便,特别写了个通用分页类,利用PagedDataSource来实现DataGrid,DataList,Repeater的分页。 完成上一页,下一页,最后一页,最前一页,总页数...