hibernate:hibernate--分页

   3步:

  1写分页类

  2ACTION里调分页类

  3页面显示分页

  ---------------------------------------1写分页类

/**
  * findPageResult
  * @此思路方法描述是:Hibernate分页
  * @param request 
  * @param HQL
  * @param num 页面要要显示页数
  * @param maxResults 每页要显示多少行
  * @param currentResult 首页显示末记录
  * @
  * List
  */
 protected List findPageResult(HttpServletRequest request,String HQL, num, maxResults, currentResult){
  this.log.debug("BasicAction--->findPageResult--->start:");
  String pageFlag = request.getParameter("pageFlag");    //标志位,(下页,上页,最后页,首页,跳转)
   rows;                 //总行数
   pages;              //总页数
  // maxResults = 5;           //每页显示行数
   currentPage = 1;           //当前页数
   startPage = 1;            //要显示起始页
   endPage = 1;            //要显示最后
   firstResult = 0;           //当前页首记录index
  // currentResult = 5;          //当前页末记录index
  
  String currentPageTemp = request.getParameter("currentPages");  //获得当前页
  (!this.trimnull(currentPageTemp).equals("")){
   currentPage = Integer(currentPageTemp).Value;
  }
  
  String firstResultTemp = request.getParameter("firstResults");  //获得当前页首记录
  (!this.trimnull(firstResultTemp).equals("")){
   firstResult = Integer(firstResultTemp).Value;
  }
  
  //化sessionFactory
  SessionFactory sessionFactory = (SessionFactory) BeanHelp.getBean("sessionFactory");
  Session session = sessionFactory.openSession;
  
  
  String rowsTemp = request.getParameter("rows");     //获得总行数
  (!this.trimnull(rowsTemp).equals("") && !"0".equals(rowsTemp)){//如果总行数不为零或不为空时候转化为整数否则为第次计算
   rows = Integer(rowsTemp).Value;
  }{               //第次计算
   String HQL_rows = "select count(*) " + HQL.sub(HQL.indexOf("from"));
   this.log.debug("HQL_rows="+HQL_rows);
   rows = ((Integer)(session.createQuery(HQL_rows).list.get(0))).Value;//第次计算得到总行数
  }
  this.log.debug("rows="+rows);
  
  String pagesTemp = request.getParameter("pages");
  (!this.trimnull(pagesTemp).equals("") && !"0".equals(pagesTemp)){//如果总页数不为零或不为空时候转化为整数否则为第次计算
   pages = Integer(pagesTemp).Value;
  } (rows 0){
   pages = 0;    //总页数
   maxResults = 0;   //每页显示行数
   currentPage = 0;   //当前页
   firstResult = 0;  //当前页首记录
   currentResult = 0;  //当前页末记录
  }{
   pages = rows/maxResults; //总行数除以每页显示最大结果数表示为总页数
   firstResult = 1;
   (pages < 1) {   
    currentResult = rows;//如果当前结果大于1时看是否有余数如果有总页数加1
   }
   (rows%maxResults>0){
    pages;
   }
  }
  
  
  
  
  (pages<num&&pages>=1) {        //如果总页数小于9时
   endPage = pages;        //这个页最后显示页数为 pages
   currentPage = currentPage;      //当前页为1
   startPage = 1;         //起始页为1
   pages = pages;         //总页数
  } (pages>9){         //如果总页数大于9
   (currentPage-num/2<1) {       //如果当前页-8<1
    endPage = num;        //这个页最后显示页数为 pages
    currentPage = currentPage;     //当前页为1
    startPage = 1;        //起始页为1
    pages = pages;        //总页数
   } (currentPage+num/2>pages){     //如果当前页+4<page
    endPage = pages;       //这个页最后显示页数为 pages
    currentPage = currentPage;     //当前页为1
    startPage = pages-num-1;      //起始页为1
    pages = pages;        //总页数
   }{
    endPage = currentPage+num/2;     //这个页最后显示页数为 pages
    currentPage = currentPage;     //当前页为1
    startPage = currentPage-num/2;     //起始页为1
    pages = pages;
   }
  }{
   pages = pages;         //这个页最后显示页数为 pages
   endPage = 0;         //这个页最后显示页数为 pages
   currentPage = 0;        //当前页为1
   startPage = 1;

  }
  
  (pageFlagnull){
   //
  } (pageFlag.equals("first")){     //首页
   currentPage = 1;        //当前页为1
   firstResult = 1;        //首记录为1
   (rows/maxResults >1) {      //总行数/每页显示最大结果数大于1
    currentResult = maxResults;     //当前页麽记录=每页显示最大结果数
   } {          //总行数/每页显示最大结果数小于1
    currentResult = rows%maxResults;   //当前页麽记录=总行数/每页要显示最大结果余数
   }
  } (pageFlag.equals("last")){     //末页
   firstResult = (pages-1)*maxResults;    //当前页首记录=总页数减乘以每页要显示最大结果数
   currentPage = pages;       //当前页就等于总页数
   currentResult = rows;       //当前页麽记录=总行数
  } (pageFlag.equals("next")){     //下
   currentPage = currentPage + 1;     //当前页加以
   firstResult = firstResult+maxResults;   //当前页首记录 = 上首记录+每页显示最大结果
   (pages > currentPage) {      //如果总页数大于当前页
    currentResult = firstResult + maxResults - 1; //当前页麽记录 = 当前页首记录+每页显示最大结果
   } {          //负责
    (rows%maxResults0) {
     currentResult = rows;     //当前页麽记录 = 当前页首记录 + 总行数/每页要显示最大结果余数
    }{
     currentResult = firstResult + rows%maxResults-1;//当前页麽记录 = 当前页首记录 + 总行数/每页要显示最大结果余数
    }
   }
  } (pageFlag.equals("before")){    //上
   currentResult = firstResult-1;     //当前页麽记录 = 上首记录
   firstResult = firstResult - maxResults;   //当前页首记录 = 上首记录 - 每页显示最大结果数
   currentPage--;
  } (pageFlag.equals("changePage")){   //跳页
   firstResult = (currentPage-1)*maxResults+1;  //当前页首记录 = (当前页-1)*每要显示最大结果数
   (pages > currentPage) {      //如果总页数大于当前页
    currentResult = firstResult + maxResults-1; //当前页麽记录 = 当前页首记录 + 每页显示最大结果数
   } {
    //currentResult = firstResult + rows%maxResults-1;//当前页麽记录 = 当前页首记录 + 总行数/每页要显示最大结果余数
    (rows%maxResults0) {
     currentResult = firstResult+maxResults-1;     //当前页麽记录 = 当前页首记录 + 总行数/每页要显示最大结果余数
    }{
     currentResult = firstResult + rows%maxResults-1;//当前页麽记录 = 当前页首记录 + 总行数/每页要显示最大结果余数
    }
   }
   
  }
  
  
  List list = session.createQuery(HQL).FirstResult(firstResult-1).MaxResults(maxResults).list;
  session.close;
  
  request.Attribute("rows",rows);     //总行数
  request.Attribute("pages",pages);    //总页数
  request.Attribute("currentPages",currentPage); //当前页
  request.Attribute("maxResults",maxResults);  //当前显示行数
  request.Attribute("firstResults",firstResult); //当前页首记录
  request.Attribute("currentResults",currentResult);//当前页末记录
  request.Attribute("endPages",endPage);   //当前页显示最后页数
  request.Attribute("startPages",startPage);  //当前页显示起始页数
  .out.prln("rows="+rows);
  .out.prln("pages="+pages);
  .out.prln("maxResults="+maxResults);
  .out.prln("firstResult="+firstResult);
  .out.prln("currentResult="+currentResult);
  .out.prln("startPage="+startPage);
  .out.prln("currentPages="+currentPage);
  .out.prln("endPages="+endPage);
   list;
 }
 
 public String trimnull(String src){
  (srcnull||src.equalsIgnoreCase("null")){
    "";
  }
   src.trim;
 }


  -----------------------------------------action页面分页

String sql="from product "

 List marketList = this.findPageResult(request,sql,10,10,10);
     request.Attribute("marketInfos", marketList);
     mapping.findForward("veryMain");


  ------------------------------------------页面显示

      <script>
       function pagesClick(indexes) {//取页数:123456
       var rows = document.getElementById("rows").value;
            var pages = document.getElementById("pages").value;
            var firstResults = document.getElementById("firstResults").value;
            document.peform.action="/admin/very.do?method=queryList&currentPages="+indexes+"&rows="+rows+"&pages="+pages+"&firstResults="+firstResults+"&pageFlag=changePage";
       document.peform.submit;
               }
      </script>
      <div ="page">
       <form action="very.do?method=selectType" name="peform"
        method="post">
        <div style="text-align:right">
         共 ${pages} 页 ${rows } 条 本页显示 ${firstResults}-${currentResults}条
         <br />
         <span>
         <anextPage">下页</a> 到第 <input name="jumppages" id="jumppages" type="text" value="${currentPages}" size="1" /> 页 <input type="button"
           value="确认" _disibledevent=>          </div>
        <div ="clear"></div>
        <input type="hidden" id="rows" name="rows" value="${rows}" />
        <!-- 总记录数 -->
        <input type="hidden" id="pages" name="pages" value="${pages}" />
        <!-- 总页数 -->
        <input type="hidden" id="currentPages" name="currentPages"
         value="${currentPages}" />
        <!-- 当前页 -->
        <input type="hidden" id="maxResults" name="maxResults"
         value="${maxResults}" />
        <!-- 每页显示记录数 -->
        <input type="hidden" id="firstResults" name="firstResults"
         value="${firstResults}" />
        <!-- 当前页条记录 -->
        <input type="hidden" id="currentResults" name="currentResults"
         value="${currentResults}" />
        <!-- 当前页最后条记录 -->
        <input type="hidden" id="endPages" name="endPages"
         value="${endPages}" />
        <!-- 要显示最后页 -->
        <input type="hidden" id="startPages" name="startPages"
         value="${startPages}" />
        <!-- 要显示起始页 -->
        <script type="text/javascript">
               //--------------------------------- 上页    
          function upPage{
                 var rows = document.getElementById("rows").value;
                 var pages = document.getElementById("pages").value;
                 var currentPages = document.getElementById("currentPages").value;
                 var maxResults = document.getElementById("maxResults").value;
                 var firstResults = document.getElementById("firstResults").value;
                 var currentResults = document.getElementById("currentResults").value;
                 var endPages = document.getElementById("endPages").value;
                 var startPages = document.getElementById("startPages").value;
                 (currentPages1) {
                  alert("已经是第页");
                  ;
                 }{
                  document.peform.action="/admin/very.do?method=queryList&currentPages="+currentPages+"&rows="+rows+"&pages="+pages+"&firstResults="+firstResults+"&pageFlag=before";
             document.peform.submit;
                 }
               }
          //--------------------------------- 下页      
               function nextPage{
                 var rows = document.getElementById("rows").value;
                 var pages = document.getElementById("pages").value;
                 var currentPages = document.getElementById("currentPages").value;
                 var maxResults = document.getElementById("maxResults").value;
                 var firstResults = document.getElementById("firstResults").value;
                 var currentResults = document.getElementById("currentResults").value;
                 var endPages = document.getElementById("endPages").value;
                 var startPages = document.getElementById("startPages").value;
                 (currentPagespages) {
                  alert("已经是最后页");
                  ;
                 }{
                  document.peform.action="/admin/very.do?method=queryList&currentPages="+currentPages+"&rows="+rows+"&pages="+pages+"&firstResults="+firstResults+"&pageFlag=next";
             document.peform.submit;
                 }
               }
          //--------------------------------- 跳页     
               function jumpPage{
                 var rows = document.getElementById("rows").value;
                 var pages = document.getElementById("pages").value;
                 var currentPages = document.getElementById("currentPages").value;
                 var maxResults = document.getElementById("maxResults").value;
                 var firstResults = document.getElementById("firstResults").value;
                 var currentResults = document.getElementById("currentResults").value;
                 var endPages = document.getElementById("endPages").value;
                 var startPages = document.getElementById("startPages").value;
                 var jumppages = document.getElementById("jumppages").value;
                 (jumppagescurrentPages) {
                  alert("这是当前页");
                   false;
                 } (jumppages<1) {
                  alert("超过页数范围");
                   false;
                 } (parseInt(jumppages)>parseInt(pages)) {
                  alert("超过页数范围");
                   false;
                 }{
                  document.peform.action="/admin/very.do?method=queryList&currentPages="+jumppages+"&rows="+rows+"&pages="+pages+"&firstResults="+firstResults+"&pageFlag=changePage";
             document.peform.submit;
                 }
               }
 
                                  </script>
      </div>


Tags:  springhibernate hibernateapi strutshibernate hibernate

延伸阅读

最新评论

发表评论