package cn.jxlg.oa.domain;
import java.util.List;
/**
* 分页功能中的一页的信息
*
* @author tyg
*
*/
public class PageBean {
// 指定的或是页面参数
private int currentPage; // 当前页
private int pageSize; // 每页显示多少条
// 查询数据库
private int recordCount; // 总记录数
private List recordList; // 本页的数据列表
// 计算
private int pageCount; // 总页数
private int beginPageIndex; // 页码列表的开始索引(包含)
private int endPageIndex; // 页码列表的结束索引(包含)
/**
* 只接受前4个必要的属性,会自动的计算出其他3个属生的值
*
* @param currentPage
* @param pageSize
* @param recordCount
* @param recordList
*/
public PageBean(int currentPage, int pageSize, int recordCount, List recordList) {
this.currentPage = currentPage;
this.pageSize = pageSize;
this.recordCount = recordCount;
this.recordList = recordList;
// 计算总页码
pageCount = (recordCount + pageSize - 1) / pageSize;
// 计算 beginPageIndex 和 endPageIndex
// >> 总页数不多于10页,则全部显示
if (pageCount <= 10) {
beginPageIndex = 1;
endPageIndex = pageCount;
}
// >> 总页数多于10页,则显示当前页附近的共10个页码
else {
// 当前页附近的共10个页码(前4个 + 当前页 + 后5个)
beginPageIndex = currentPage - 4;
endPageIndex = currentPage + 5;
// 当前面的页码不足4个时,则显示前10个页码
if (beginPageIndex < 1) {
beginPageIndex = 1;
endPageIndex = 10;
}
// 当后面的页码不足5个时,则显示后10个页码
if (endPageIndex > pageCount) {
endPageIndex = pageCount;
beginPageIndex = pageCount - 10 + 1;
}
}
}
public List getRecordList() {
return recordList;
}
public void setRecordList(List recordList) {
this.recordList = recordList;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getRecordCount() {
return recordCount;
}
public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}
public int getBeginPageIndex() {
return beginPageIndex;
}
public void setBeginPageIndex(int beginPageIndex) {
this.beginPageIndex = beginPageIndex;
}
public int getEndPageIndex() {
return endPageIndex;
}
public void setEndPageIndex(int endPageIndex) {
this.endPageIndex = endPageIndex;
}
}
使用案例
1、action调用 // 准备分页信息, 最终版 new QueryHelper(Reply.class, "r")// .addCondition("r.topic=?", topic)// .addOrderProperty("r.postTime", true)// .preparePageBean(replyService, pageNum, pageSize); 2、service调用 // 公共的查询分页信息的方法(最终版) public PageBean getPageBean(int pageNum, int pageSize, QueryHelper queryHelper) { System.out.println("-------> DaoSupportImpl.getPageBean( int pageNum, int pageSize, QueryHelper queryHelper )"); // 参数列表 List parameters = queryHelper.getParameters(); // 查询本页的数据列表 Query listQuery = getSession().createQuery(queryHelper.getListQueryHql()); // 创建查询对象 if (parameters != null) { // 设置参数 for (int i = 0; i < parameters.size(); i++) { listQuery.setParameter(i, parameters.get(i)); } } listQuery.setFirstResult((pageNum - 1) * pageSize); listQuery.setMaxResults(pageSize); List list = listQuery.list(); // 执行查询 // 查询总记录数量 Query countQuery = getSession().createQuery(queryHelper.getCountQueryHql()); if (parameters != null) { // 设置参数 for (int i = 0; i < parameters.size(); i++) { countQuery.setParameter(i, parameters.get(i)); } } Long count = (Long) countQuery.uniqueResult(); // 执行查询 return new PageBean(pageNum, pageSize, count.intValue(), list); } 3、jsp调用 jspf文件 <%@ include file="/WEB-INF/jsp/util/pageView.jspf" %>
页面模板
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %>
页次:${currentPage}/${pageCount }页 每页显示:${pageSize }条 总记录数:${recordCount }条
<%-- 当前页 --%> ${num} <%-- 非当前页 --%> ${num} 转到:
${num}