query分页,可带参数。

封装一个分页类:

public class NewPage<T> {

//需要获取参数有: 每页条数,当前页,总条数

private int pageSize;//每页条数

private int firstPage = 1;//首页

private int previousPage;//上一页

private int currentPage;//当前页

private int nextPage;//下一页

private int lastPage;//尾页

private int pageCount;//总页数

private int totalCount;//总条数

private List<T> list;//只用来存放当前页要现实的数据内容记录

//一键设置其他参数...

public void setOthers(){

//计算总页数 pageCount

this.pageCount = (this.totalCount-1)/this.pageSize+1;

//下一页

if((this.currentPage+1)<=this.pageCount){

this.nextPage = this.currentPage+1;

}else{

this.nextPage = this.currentPage;

}

//上一页

if(this.currentPage>1){

this.previousPage = this.currentPage-1;

}else{

this.previousPage = this.currentPage;

}

//设置尾页

this.lastPage = this.pageCount;

}

//快捷设置初始化参数,也可以用其他单个的设置,参数依次为:当前页,每页条数,总条数

public void setFast(int currentPage,int pageSize,int total){

this.currentPage = currentPage;

this.pageSize = pageSize;

this.totalCount = total;

setOthers();

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getFirstPage() {

return firstPage;

}

public void setFirstPage(int firstPage) {

this.firstPage = firstPage;

}

public int getPreviousPage() {

return previousPage;

}

public void setPreviousPage(int previousPage) {

this.previousPage = previousPage;

}

public int getCurrentPage() {

return currentPage;

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

public int getNextPage() {

return nextPage;

}

public void setNextPage(int nextPage) {

this.nextPage = nextPage;

}

public int getLastPage() {

return lastPage;

}

public void setLastPage(int lastPage) {

this.lastPage = lastPage;

}

public int getPageCount() {

return pageCount;

}

public void setPageCount(int pageCount) {

this.pageCount = pageCount;

}

public int getTotalCount() {

return totalCount;

}

public void setTotalCount(int totalCount) {

this.totalCount = totalCount;

}

public List<T> getList() {

return list;

}

public void setList(List<T> list) {

this.list = list;

}

}

在dao里:两个方法,一个是查询条目总数,一个是查询信息

public long totalCount(String sql){

List<Long> list = getHibernateTemplate().find(sql)

return list.get(0);

}

public NewPage<HrResultEntering> findAll(String sql,String sql2,int currentPage,int pageSize){

int totalNum = (int)totalCount(sql);

NewPage<HrResultEntering> page = new NewPage<HrResultEntering>();

page.setFast(currentPage, pageSize, totalNum);

Session session = this.getSession();

Query query = session.createQuery(sql2);

query.setFirstResult((currentPage-1)*pageSize);

query.setMaxResults(pageSize);

page.setList((List<HrResultEntering>)query.list());

return page;

}

在service里:

public NewPage<HrPerformTemplate> findAll(int currentPage, int pageSize,Integer status) {

String sql = "select count(*) from HrPerformTemplate where status="+status;

String sql2 = "from HrPerformTemplate where status="+status;

NewPage<HrPerformTemplate> page = hptd.findAll(sql, sql2, currentPage, pageSize);

return page;

}

在sevlet中:

public ActionForward noAudit(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

//List<HrPerformTemplate> list = mrsi.selectHPT1(0);

//request.setAttribute("list",list);

int currentPage = 1;

String current = request.getParameter("current");

if(current!=null&&!current.equals("")){

currentPage = Integer.parseInt(current);

}

HttpSession session = request.getSession();

session.setAttribute("currentPage",currentPage);

int pageSize = 6;

//session.setAttribute("pageSize",pageSize);

NewPage<HrPerformTemplate> page_all = mrsi.findAll(currentPage, pageSize,0);

List<HrPerformTemplate> list = page_all.getList();

request.setAttribute("list",list);

request.setAttribute("page_all", page_all);

return mapping.findForward("mtCheckList");

}

jsp页面中:

<ul>

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=1">首页</a></li>

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.previousPage}">上一页</a></li>

<c:if test="${page_all.currentPage-2 >0}">

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.currentPage-2}">${page_all.currentPage-2}</a></li>

</c:if>

<c:if test="${page_all.currentPage-1 >0}">

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.currentPage-1}">${page_all.currentPage-1}</a></li>

</c:if>

<li style=" background-color:#FFF;">

<a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.currentPage}" style="color:#090">${page_all.currentPage}</a>

</li>


<c:if test="${page_all.currentPage+1 <=page_all.pageCount}">

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.currentPage+1}">${page_all.currentPage+1}</a></li>

</c:if>

<c:if test="${page_all.currentPage+2 <=page_all.pageCount}">

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.currentPage+2}">${page_all.currentPage+2}</a></li>

</c:if>

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.nextPage}">下一页</a></li>

<li><a href="<%=path %>/meritRating.do?method=selectResult&current=${page_all.lastPage}">最后一页</a></li>

<li style=" border:0px; background-color:#FFF">${page_all.currentPage}/${page_all.pageCount}</li>

</ul>

核心的代码都在其中,根据个人需求不同,自己修改即可.http://utility.baidu.com/blogsearch/submit.php