关于Hibernate分页的实现方法

     利用Hibernate分页,是在BaseHibernateDAO里写几行代码:

     代码如下:

HttpServletRequest request;
 int pNo = 0,pageno1 = 0,pagesize = 10,row = 0;
 
 public int getRow() {
  return row;
 }
 public void setRow(int row) {
  this.row = row;
 }
 public void init(HttpServletRequest request,Integer pageSize){
  this.request = request;
  pagesize = pageSize;
  String pageno = request.getParameter("pageno")!=null&&!request.getParameter("pageno").trim().equals("")?request.getParameter("pageno"):"0";
  try{
   pageno1 = !pageno.equals("0")&&com.util.StrUtil.isNumeric(pageno)?Integer.valueOf(pageno):0;
  }catch(Exception e){
   e.printStackTrace();
   pageno1 = 0;
  }
  pNo = pageno1<1?0:pageno1-1;
 }

 

 

     我一直以前用这种分页方法,很简单,也很实用。

     今天把详细的使用方法写出来,大家来看看!希望大家能给点建议。

 

     第一步:在BaseHibernateDAO里写填加如下代码:

     HttpServletRequest request;
 int pNo = 0,pageno1 = 0,pagesize = 10,row = 0;
 
 public int getRow() {
  return row;
 }
 public void setRow(int row) {
  this.row = row;
 }
 public void init(HttpServletRequest request,Integer pageSize){
  this.request = request;
  pagesize = pageSize;
  String pageno = request.getParameter("pageno")!=null&&!request.getParameter("pageno").trim().equals("")?request.getParameter("pageno"):"0";
  try{
   pageno1 = !pageno.equals("0")&&com.util.StrUtil.isNumeric(pageno)?Integer.valueOf(pageno):0;
  }catch(Exception e){
   e.printStackTrace();
   pageno1 = 0;
  }
  pNo = pageno1<1?0:pageno1-1;
 }

 

 

    第二步:在DAO里:

public List show(HttpServletRequest request,Integer star,Integer pagesize,Integer isDel,
   String text,String order){

  log.debug("finding all WebAdverSpace instances");
  init(request, pagesize);
  getSession().clear();
  try {
   String queryString = "from WebAdverSpace where isDel=" + isDel ;
   queryString = queryString + " " + (order.equals("")?" order by isTop desc,id desc":order);
   Query queryObject = getSession().createQuery(queryString);
   row = queryObject.list().size();
   star = star==0&&pagesize*pNo<row?pagesize*pNo:star;
   if(star!=0)queryObject.setFirstResult(star);
   if(pagesize!=0)queryObject.setMaxResults(pagesize);

   return queryObject.list();
  } catch (RuntimeException re) {
   log.error("find all failed", re);
   throw re;
  }
 }

 

     ::::init(request,pagesize);这个应该知道吧,传入request和pagesize,

     下面的就更好理解了,不在说了!

     第三步:在页面里
     String isdel = request.getParameter("isdel")==null?"0":request.getParameter("isdel");
     String text = request.getParameter("text")==null?"":request.getParameter("text");
     String order = request.getParameter("order")==null?"":request.getParameter("order");
     text = new String(text.getBytes("ISO-8859-1"),"utf-8");
     order = order.replace("-"," ");
     Integer start = 0,pagesize = 15;

     /*本来想传值部分就不用写这么全了,下面为了说明,还是写上吧,比较方便,同时也别让混了!

     listDao.show(request,start,pagesize,Integer.valueOf(isdel),text,order);

     说明:

     1、listDao是初始化的DAO

     2、show是调用DAO里的show方法,在第二步里添加的

     3、start是起始位置,一般是0,pagesize是页码数如:15;isdel是删除的意思;text是查询的关键字;order是排序的意思;

    页面就是:list.jsp?pageno=0是0到15条内容,从0开始到15条,其实第一步填入的代码已经说明1以下的都是第一页。

     list.jsp?pageno=2是15到30的内容,从15开始取15条内容。以此类推;

     明白了吧

     这句就可以调出分页时,本页的内容!

 

 

 

 

 

 

    还有一个JS可以结合这个来做分页,现在把JS代码贴在这里:

 

//===== relative URL handling code for js files ================
sWZBaseFolder = "";                         
sWZ = window.location.href;                                    
iWZ = sWZ.indexOf(sWZBaseFolder) + sWZBaseFolder.length + 1;   
sWZBase = sWZ.substring(0,iWZ);                                
//===== Copyright ?2001 Spidersoft. All rights reserved. ======
//分页显示
function ShowPageLink(recCount, recPage, nPage, url)
{
 var nPages, bof, eof,i,spage;

 if (recCount % recPage == 0)
  nPages = recCount / recPage;
 else
  nPages = (recCount - (recCount % recPage)) / recPage + 1;

 if (nPage < 1)  nPage = 1;
 if (nPage > nPages) nPage = nPages;
 if (nPages<2) spage = 0;

 bof = (nPage == 1);
 eof = (nPage == nPages);

 document.write("&nbsp;共<font class=body_number>" + recCount + "</font>条信息,");
 document.write("&nbsp;每页<font class=body_number>" + recPage + "</font>条信息,");
 document.write("&nbsp;当前页码:<font class=body_number>" + nPage + "</font>/<font class=body_number>" + nPages + "</font>");
 //document.write("&nbsp;分成<font class=body_number>" + nPages + "</font>页显示,");
 //document.write("&nbsp;现在是第<font class=body_number>" + nPage + "</font>页");
 //document.write("&nbsp;|&nbsp;");
 //if(bof)     document.write("首&nbsp;页")
 //else  document.write("<a href=" + url + (0) + ">首&nbsp;页</a>");
 //document.write("&nbsp;|&nbsp;");
 //if (bof) document.write("上一页");
 //else  document.write("<a href=" + url + (nPage-1) + ">上一页</a>");
 //document.write("&nbsp;|&nbsp;");
 //if (eof) document.write("下一页");
 //else  document.write("<a href=" + url + (nPage+1) + ">下一页</a>");
 //document.write("&nbsp;|&nbsp;");
 //if(eof)     document.write("末&nbsp;页")
 //else  document.write("<a href=" + url + (nPages) + ">末&nbsp;页</a>");
 document.write("&nbsp;|&nbsp;&nbsp;转跳");
 document.write("<select οnchange=/"window.location=('" + url + "'+this.options[this.selectedIndex].value)/">");
 for (i=1;i<=nPages;i++){
  if (i==nPage){
  //使当前页为选定状态
    document.write('<option value=' + i + ' selected>第' + i + '页</option>');
  
  } else {
    document.write('<option value=' + i + '>第' + i + '页</option>');
  
  }
  }
    document.write('</select>');
 document.write("&nbsp;&nbsp;");
 if(bof){document.write("首页");
  }
 else{  
  if(nPage>0){
  document.write("<a href=" + url + (0) + ">首页</a>");
  }else{
   document.write("首页");
  }
 
 }
 document.write("&nbsp;&nbsp;");
 if (bof){ 
  document.write("上一页");
 
 }else{
  if(nPage>0){
  document.write("<a href=" + url + (nPage-1) + ">上一页</a>");
  }else{
   document.write("上一页");
  }
 }
 document.write("&nbsp;&nbsp;");
 if (eof) document.write("下一页");
 else  document.write("<a href=" + url + (nPage+1) + ">下一页</a>");
 document.write("&nbsp;&nbsp;");
 if(eof)     document.write("末页")
 else  document.write("<a href=" + url + (nPages) + ">末页</a>");

 

 

     JS代码结束:::::::::::

     调用此JS

     第一、在BaseHibernateDAO里填加如下代码:

 


 public String pageBottom(String extParam){
  return "<script language=/"javascript/">ShowPageLink("+row+","+pagesize+"," +pageno1+", '"+extParam+"pageno=');</script>";
 }

     第二、在页面里加入JS代码,然后在需要分页的地方加:

     <%=listDao.pageBottom("?") %>

    即可实现漂亮的分页了!

 

 

 

希望能给朋友们帮助!

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值