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¤t=1">首页</a></li>
<li><a href="<%=path %>/meritRating.do?method=selectResult¤t=${page_all.previousPage}">上一页</a></li>
<c:if test="${page_all.currentPage-2 >0}">
<li><a href="<%=path %>/meritRating.do?method=selectResult¤t=${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¤t=${page_all.currentPage-1}">${page_all.currentPage-1}</a></li>
</c:if>
<li style=" background-color:#FFF;">
<a href="<%=path %>/meritRating.do?method=selectResult¤t=${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¤t=${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¤t=${page_all.currentPage+2}">${page_all.currentPage+2}</a></li>
</c:if>
<li><a href="<%=path %>/meritRating.do?method=selectResult¤t=${page_all.nextPage}">下一页</a></li>
<li><a href="<%=path %>/meritRating.do?method=selectResult¤t=${page_all.lastPage}">最后一页</a></li>
<li style=" border:0px; background-color:#FFF">${page_all.currentPage}/${page_all.pageCount}</li>
</ul>
核心的代码都在其中,根据个人需求不同,自己修改即可.