//分页后的数据list为要分页的list
int size = list.size() > pageSize * pageIndex ? pageSize * pageIndex: list.size();List listPage=list.subList(pageSize * (pageIndex - 1), size);
2.hibernate分页
List<Object> list = getSession().createSQLQuery(sql).setFirstResult((pageIndex-1)*pageSize).setMaxResults(pageSize).list();
3.分页对象
/**
* 分页对象. 包含当前页数据及分页信息
*
* @param <T> 翻页查询的实体对象
*/
public class PageFinder<T> implements Serializable {
private String property;// 查找属性名称
private String keyword;// 查找关键字
private String orderBy = "XXXX";// 排序字段
private OrderType orderType = OrderType.desc;// 排序方式
// 排序方式
public enum OrderType{
asc, desc
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public OrderType getOrderType() {
return orderType;
}
public void setOrderType(OrderType orderType) {
this.orderType = orderType;
}
public Integer getPageNumber() {
return pageNo;
}
public void setPageNumber(int pageNo) {
this.pageNo=pageNo;
}
public Integer getTotalCount() {
return rowCount;
}
@SuppressWarnings("rawtypes")
public List getList() {
return dataList;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void setList(List list) {
this.dataList = list;
}
public void setTotalCount(int count){
this.rowCount=count;
}
public Integer getPageCountSize(){
if(pageSize == 0){
pageSize = 10;
}
return (rowCount - 1) / pageSize + 1;
}
/**
* 默认每页记录数
*/
private static int DEFAULT_PAGE_SIZE = 10;
/**
* 每页的记录数
*/
private int pageSize = DEFAULT_PAGE_SIZE;
/**
* 当前页中存放的数据
*/
private List<T> dataList = new ArrayList<T>();
/**
* 总记录数
*/
private int rowCount;
/**
* 页数
*/
private int pageCount;
/**
* 跳转页数
*/
private int pageNo = 1;
/**
* 是否有上一页
*/
private boolean hasPrevious = false;
/**
* 是否有下一页
*/
private boolean hasNext = false;
public PageFinder() {
}
public PageFinder(int pageNo, int rowCount) {
this(pageNo,rowCount,DEFAULT_PAGE_SIZE);
}
public PageFinder(int pageNo, int rowCount, int pageSize) {
this.pageNo = pageNo;
this.pageSize = pageSize;
this.rowCount = rowCount;
this.pageCount = getTotalPageCount();
refresh();
}
public PageFinder(int pageNo, int rowCount, List<T> dataList) {
this(pageNo,rowCount,DEFAULT_PAGE_SIZE,dataList);
}
public PageFinder(int pageNo, int rowCount,int pageSize, List<T> dataList) {
this.pageNo = pageNo;
this.pageSize = pageSize;
this.rowCount = rowCount;
this.pageCount = getTotalPageCount();
this.dataList = dataList;
refresh();
}
/**
* 获取总页数
*/
public final int getTotalPageCount() {
if(pageSize == 0){
pageSize = 10;
}
if (rowCount % pageSize == 0){
return rowCount / pageSize;
}else{
return rowCount / pageSize + 1;
}
}
/**
* 刷新当前分页对象数据
*/
public void refresh() {
if (pageCount <= 1) {
hasPrevious = false;
hasNext = false;
} else if (pageNo == 1) {
hasPrevious = false;
hasNext = true;
} else if (pageNo == pageCount) {
hasPrevious = true;
hasNext = false;
} else {
hasPrevious = true;
hasNext = true;
}
}
/**
* 获取跳转页第一条数据在数据集的位置
*/
public int getStartOfPage() {
return (pageNo - 1) * pageSize;
}
public List<T> getDataList() {
return dataList;
}
public void setDataList(List<T> dataList) {
this.dataList = dataList;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public boolean isHasPrevious() {
return hasPrevious;
}
public void setHasPrevious(boolean hasPrevious) {
this.hasPrevious = hasPrevious;
}
public boolean isHasNext() {
return hasNext;
}
public void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
/**
* 文档数
*/
private int docNum;
/**
* 文档数
*/
private int videoNum;
/**
* 文档数
*/
private int exercNum;
/**
* 文档数
*/
private int examNum;
/**
* 文档数
*/
private int flashNum;
/**
* 文档数
*/
private int zipNum;
/**
* 源代码数
*/
private int codeNum;
public int getDocNum() {
return docNum;
}
public void setDocNum(int docNum) {
this.docNum = docNum;
}
public int getVideoNum() {
return videoNum;
}
public void setVideoNum(int videoNum) {
this.videoNum = videoNum;
}
public int getExercNum() {
return exercNum;
}
public void setExercNum(int exercNum) {
this.exercNum = exercNum;
}
public int getExamNum() {
return examNum;
}
public void setExamNum(int examNum) {
this.examNum = examNum;
}
public int getFlashNum() {
return flashNum;
}
public void setFlashNum(int flashNum) {
this.flashNum = flashNum;
}
public int getZipNum() {
return zipNum;
}
public void setZipNum(int zipNum) {
this.zipNum = zipNum;
}
public int getCodeNum() {
return codeNum;
}
public void setCodeNum(int codeNum) {
this.codeNum = codeNum;
}
}
3.页面
<script type="text/javascript">
$().ready( function() {
$("#XXX").pager({
pagenumber: ${pager.pageNumber},
pagecount: ${pager.pageCountSize},
buttonClickCallback: $.gotoPage
});
})
</script>
<span id="XXX"></span>
<input type="hidden" name="pager.pageNo" id="pageNumber" value="${pager.pageNumber}" />
<input type="hidden" name="pager.orderBy" id="orderBy" value="${pager.orderBy}" />
<input type="hidden" name="pager.orderType" id="order" value="${pager.orderType}" />