package util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang.StringUtils;
/**
* 与具体ORM实现无关的分页参数及查询结果封装.
*
* @param <T>
* Page中记录的类型.
* @author ben
*/
public class Page<T>
{
// 公共变量
public static final String ASC = "asc";
public static final String DESC = "desc";
// 分页参数
protected int pageNo = 1;
protected int pageSize = 20;
protected String orderBy = null;
protected String order = ASC;
protected boolean autoCount = true;
// 返回结果
protected List<T> result = new ArrayList<T>();
protected long totalCount = 0;
protected int beginNum = 0;
protected int endNum = 0;
// 构造函数
public Page()
{
super();
}
public Page(final int pageSize)
{
setPageSize(pageSize);
}
public Page(final int pageSize, final boolean autoCount)
{
setPageSize(pageSize);
this.autoCount = autoCount;
}
// 查询参数函数
/**
* 获得当前页的页号,序号从1开始,默认为1.
*/
public int getPageNo()
{
return pageNo;
}
/**
* 设置当前页的页号,序号从1开始,低于1时自动调整为1.
*/
public void setPageNo(int pageNo)
{
this.pageNo = pageNo;
if (pageNo < 1)
{
this.pageNo = 1;
}
}
/**
* 获得每页的记录数量,默认为20.
*/
public int getPageSize()
{
return pageSize;
}
/**
* 设置每页的记录数量,超出MIN_PAGESIZE与MAX_PAGESIZE范围时会自动调整.
*/
public void setPageSize(final int pageSize)
{
this.pageSize = pageSize;
}
/**
* 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从0开始.
*/
public int getFirst()
{
return ((pageNo - 1) * pageSize);
}
/**
* 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从0开始.
*/
public int getEnd()
{
return getFirst() + getPageSize();
}
/**
* 获得排序字段,无默认值.多个排序字段时用','分隔,仅在Criterion查询时有效.
*/
public String getOrderBy()
{
return orderBy;
}
/**
* 设置排序字段.多个排序字段时用','分隔.仅在Criterion查询时有效.
*/
public void setOrderBy(final String orderBy)
{
this.orderBy = orderBy;
}
/**
* 是否已设置排序字段,仅在Criterion查询时有效.
*/
public boolean isOrderBySetted()
{
return StringUtils.isNotBlank(orderBy);
}
/**
* 获得排序方向,默认为asc,仅在Criterion查询时有效.
* @param order
* 可选值为desc或asc,多个排序字段时用','分隔.
*/
public String getOrder()
{
return order;
}
/**
* 设置排序方式向,仅在Criterion查询时有效.
* 可选值为desc或asc,多个排序字段时用','分隔.
*/
public void setOrder(final String order)
{
// 检查order字符串的合法值
String[] orders = StringUtils.split(order, ',');
for (String orderStr : orders)
{
if (!StringUtils.equalsIgnoreCase(DESC, orderStr)
&& !StringUtils.equalsIgnoreCase(ASC, orderStr))
throw new IllegalArgumentException("排序方向" + orderStr + "不是合法值");
}
this.order = order.toLowerCase();
}
/**
* 取得分页参数的组合字符串. 将多个分页参数组合成一个字符串方便在页面上的传递,格式为pageNo|orderBy|order.
*/
public String getPageRequest()
{
return getPageNo() + "|" + StringUtils.defaultString(getOrderBy())
+ "|" + getOrder();
}
/**
* 设置分页参数的组合字符串. 将多个分页参数组合成一个字符串方便在页面上的传递,格式为pageNo|orderBy|order.
*/
public void setPageRequest(final String pageRequest)
{
if (StringUtils.isBlank(pageRequest))
return;
String[] params = StringUtils.splitPreserveAllTokens(pageRequest, '|');
if (StringUtils.isNumeric(params[0]))
{
setPageNo(Integer.valueOf(params[0]));
}
if (StringUtils.isNotBlank(params[1]))
{
setOrderBy(params[1]);
}
if (StringUtils.isNotBlank(params[2]))
{
setOrder(params[2]);
}
}
/**
* 查询对象时是否自动另外执行count查询获取总记录数,默认为false,仅在Criterion查询时有效.
*/
public boolean isAutoCount()
{
return autoCount;
}
/**
* 查询对象时是否自动另外执行count查询获取总记录数,仅在Criterion查询时有效.
*/
public void setAutoCount(final boolean autoCount)
{
this.autoCount = autoCount;
}
/**
* 取得页内的记录列表.
*/
public List<T> getResult()
{
if (result == null)
return Collections.emptyList();
return result;
}
public void setResult(final List<T> result)
{
this.result = result;
}
/**
* 取得总记录数,默认值为-1.
*/
public long getTotalCount()
{
return totalCount;
}
public void setTotalCount(final long totalCount)
{
this.totalCount = totalCount;
}
/**
* 根据pageSize与totalCount计算总页数,默认值为-1.
*/
public int getTotalPages()
{
if (totalCount < 0)
return -1;
int count = (int)(totalCount / pageSize);
if (totalCount % pageSize > 0)
{
count++;
}
return count;
}
/**
* 是否还有下一页.
*/
public boolean isHasNext()
{
return (pageNo + 1 <= getTotalPages());
}
/**
* 取得下页的页号,序号从1开始.
*/
public int getNextPage()
{
if (isHasNext())
return pageNo + 1;
else return pageNo;
}
/**
* 是否还有上一页.
*/
public boolean isHasPre()
{
return (pageNo - 1 >= 1);
}
/**
* 取得上页的页号,序号从1开始.
*/
public int getPrePage()
{
if (isHasPre())
return pageNo - 1;
else return pageNo;
}
/**
* 取得反转的排序方向. 如果有以','分隔的多个排序方向,逐一进行反转.
*/
public String getInverseOrder()
{
String[] orders = StringUtils.split(order, ',');
for (int i = 0; i < orders.length; i++)
{
if (DESC.equals(orders[i]))
{
orders[i] = ASC;
}
else
{
orders[i] = DESC;
}
}
return StringUtils.join(orders);
}
public int getBeginNum()
{
return beginNum;
}
public void setBeginNum(int beginNum)
{
this.beginNum = beginNum;
}
public int getEndNum()
{
return endNum;
}
public void setEndNum(int endNum)
{
this.endNum = endNum;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
各种SSH框架整合实例
共273个文件
jar:120个
xml:38个
class:29个
需积分: 7 9 下载量 173 浏览量
2013-07-09
11:28:48
上传
评论 1
收藏 57.78MB RAR 举报
温馨提示
对各个版本的Struts、spring、hibernate、jdbc的框架实例的整合
资源推荐
资源详情
资源评论
收起资源包目录
各种SSH框架整合实例 (273个子文件)
Page.class 6KB
IStudentDaoImpl.class 3KB
BookDAOImpl.class 2KB
Student.class 2KB
UpdateAction.class 2KB
QueryAction.class 2KB
QueryAction.class 2KB
BookServiceImpl.class 2KB
QAction.class 1KB
BookDaoImpl.class 1KB
AddStudentAction.class 1KB
FindStudentAction.class 1KB
Book.class 1KB
Book.class 1KB
Book.class 1KB
BookServiceImpl.class 1KB
BookServiceImpl.class 1KB
BookDaoImpl$1.class 1KB
IStudentServiceImpl.class 969B
AddAction.class 959B
BookDAOImpl.class 932B
IStudentDao.class 531B
BookDAO.class 373B
BookService.class 307B
IStudentService.class 265B
BookDAO.class 265B
BookService.class 229B
BookDao.class 192B
BookService.class 156B
.classpath 6KB
.classpath 2KB
.classpath 2KB
.classpath 1KB
spring.jar 2.81MB
spring.jar 2.47MB
spring.jar 2.47MB
hibernate3.jar 2.17MB
hibernate3.jar 2.17MB
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar 1.57MB
xwork-core-2.1.6.jar 1.49MB
xwork-core-2.1.6.jar 1.49MB
aspectjweaver.jar 1.47MB
aspectjweaver.jar 1.47MB
aspectjweaver.jar 1.47MB
ojdbc14.jar 1.29MB
ojdbc14.jar 1.29MB
ojdbc14.jar 1.29MB
freemarker-2.3.15.jar 859KB
freemarker-2.3.15.jar 859KB
freemarker.jar 784KB
freemarker.jar 784KB
struts2-core-2.1.8.jar 738KB
struts2-core-2.1.8.1.jar 738KB
org.springframework.context-3.0.1.RELEASE-A.jar 642KB
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar 603KB
c3p0-0.9.1.jar 594KB
c3p0-0.9.1.jar 594KB
struts.jar 559KB
struts.jar 559KB
commons-collections-3.2.jar 558KB
org.springframework.beans-3.0.1.RELEASE-A.jar 535KB
struts2-embeddedjsp-plugin-2.1.8.1.jar 528KB
org.springframework.web.struts-3.0.1.RELEASE-A.jar 524KB
mysql-connector-java-3.1.12-bin.jar 436KB
antlr-2.7.6.jar 433KB
jstl-1.2.jar 405KB
org.springframework.web.servlet-3.0.1.RELEASE-A.jar 389KB
com.springsource.org.apache.log4j-1.2.15.jar 387KB
com.springsource.com.ibatis-2.3.4.726.jar 377KB
com.springsource.com.ibatis-2.3.4.726.jar 377KB
org.springframework.jdbc-3.0.1.RELEASE-A.jar 369KB
antlr.jar 357KB
antlr.jar 357KB
hibernate-tools.jar 356KB
hibernate-tools.jar 356KB
org.springframework.web-3.0.1.RELEASE-A.jar 352KB
antlr-2.7.2.jar 350KB
org.springframework.core-3.0.1.RELEASE-A.jar 347KB
log4j-1.2.11.jar 342KB
log4j-1.2.11.jar 342KB
org.springframework.orm-3.0.1.RELEASE-A.jar 324KB
com.springsource.net.sf.cglib-2.2.0.jar 319KB
org.springframework.aop-3.0.1.RELEASE-A.jar 313KB
dom4j-1.6.1.jar 307KB
dom4j-1.6.1.jar 307KB
com.springsource.org.apache.commons.httpclient-3.1.0.jar 301KB
cglib-2.1.3.jar 276KB
cglib-2.1.3.jar 276KB
com.springsource.org.codehaus.jackson.mapper-1.0.0.jar 264KB
com.springsource.org.apache.commons.lang-2.4.0.jar 258KB
commons-lang-2.3.jar 240KB
ognl-2.7.3.jar 234KB
ognl-2.7.3.jar 234KB
org.springframework.transaction-3.0.1.RELEASE-A.jar 223KB
commons-beanutils.jar 191KB
commons-beanutils-1.7.0.jar 184KB
commons-beanutils-1.7.0.jar 184KB
commons-digester.jar 171KB
commons-digester.jar 171KB
commons-collections-2.1.1.jar 171KB
共 273 条
- 1
- 2
- 3
资源评论
伯牙碎琴
- 粉丝: 386
- 资源: 67
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功