zoukankan      html  css  js  c++  java
  • 分页查询

    page 类代码分页查询代码

     1 package com.pb.pager;
     2 
     3 public class Pager {
     4     /**
     5      * 总页数
     6      */
     7     private int totalcount = 0;
     8     /**
     9      * 页面大小,即每页显示记录数
    10      */
    11     private int pageSize = 0;
    12     /**
    13      * 记录总数
    14      */
    15     private int recordCount = 0;
    16     
    17     /**
    18      * 当前页号
    19      */
    20     private int currPageNo=0;
    21 
    22     public int getCurrPageNo() {
    23         if(totalcount==0)
    24             return 0;
    25         return currPageNo;
    26     }
    27 
    28     public void setCurrPageNo(int currPageNo) {
    29         if(currPageNo>0)
    30         this.currPageNo = currPageNo;
    31     }
    32 
    33     public int getTotalcount() {
    34         return totalcount;
    35     }
    36 
    37     public void setTotalcount(int totalcount) {
    38         this.totalcount = totalcount;
    39     }
    40 
    41     public int getPageSize() {
    42         return pageSize;
    43     }
    44 
    45     public void setPageSize(int pageSize) {
    46         if (pageSize > 0)
    47             this.pageSize = pageSize;
    48     }
    49 
    50     public int getRecordCount() {
    51         return recordCount;
    52     }
    53 
    54     public void setRecordCount(int recordCount) {
    55         if (recordCount > 0)
    56             this.recordCount = recordCount;
    57     }
    58 
    59     // 设置总页数
    60     private void setTotalpagecount() {
    61         if (this.recordCount % this.pageSize == 0) {
    62             this.recordCount = this.recordCount / this.pageSize;
    63         } else if (this.recordCount % this.pageSize > 0) {
    64             this.recordCount = this.recordCount / this.pageSize + 1;
    65         }else{            
    66             this.recordCount=0;
    67         }    
    68     }
    69     /**
    70      * 开始记录数
    71      * @return
    72      */
    73     public int getStartRow(){
    74         return (currPageNo-1)*pageSize+1;
    75         
    76     }
    77     /**
    78      * 结束记录数
    79      * @return
    80      */
    81     public int getEndRow(){
    82         return currPageNo*pageSize;
    83         
    84     }
    85 }
    View Code

    分页查询的步骤

    (1).确定每页显示的数据数量

    (2).计算显示数据的总数量

    (3).计算显示的页数=总数量/每页显示的数据数量(+1)

    (4)。编写分页查询SQl语句

    (5).实现分页查询

    使用CallbleStatement执行存储过程

     1     public int getTotalcountProc() {
     2         int totalCount=0;
     3         CallableStatement proc=null;
     4         String sql="{call PRO_GETTOTALCOUNT(?)}";
     5         getConnection();
     6         try {
     7             proc=con.prepareCall(sql);
     8             proc.registerOutParameter(1, Types.INTEGER);
     9             proc.execute();
    10             totalCount=proc.getInt(1);
    11         } catch (SQLException e) {
    12             // TODO Auto-generated catch block
    13             e.printStackTrace();
    14         }
    15         
    16         // TODO Auto-generated method stub
    17         return totalCount;
    18     }

    分页显示关键点

    确定当前页

    设置首页,上一页,下一页,末页的页码

    首页和末页的控制

     1 <script type="text/javascript">
     2 function page_nav(frm,num){
     3         frm.pageIndex.value=num;
     4         frm.submit();
     5     }
     6     function jump_to(frm,pegeno){
     7         var regexp=/^d+$/;
     8         if(!regexp.test(pegeno)){
     9             alert("请输入正确数字!");
    10             return false;
    11         }else{
    12             page_nav(frm,pegeno);
    13         }
    14         
    15     }
    16 </script>
    17  <%
    18                 //获取当前页码
    19                 String currentPage=request.getParameter("pageIndex");
    20                 if(currentPage==null)
    21                     currentPage="1";
    22                 int pageIndex=Integer.parseInt(currentPage);
    23                 //获取新闻记录总数量   
    24                 int total=newsService.getTotalcount();
    25                 //每页显示记录数
    26                 int pagesize=2;
    27                 /*获取总页数*/
    28                 Pager pag=new Pager();
    29                 pag.setCurrPageNo(pageIndex);
    30                 pag.setPageSize(pagesize); 
    31                 pag.setRecordCount(total);
    32                 int totalpage=pag.getTotalPagecount();
    33                 //控制首页和末页
    34                 if(pageIndex<1){
    35                     pageIndex=1;
    36                 }else if(pageIndex>totalpage){                  
    37                     pageIndex=totalpage;
    38                 }
    39                 
    40                 List<News> newsList=newsService.getPageNewsList(pageIndex,pagesize);
    41 %>
    42     <li><%=total%>条记录&nbsp;&nbsp;<%=currentPage%>/<%=totalpage %></li>
    43                 <%
    44                 if(pageIndex>1){
    45                 %>
    46                 <a href="javascript:page_nav(document.forms[0],1)">首页</a>&nbsp;&nbsp;
    47                 <a href="javascript:page_nav(document.forms[0],<%=pageIndex-1%>)">上一页</a>&nbsp;&nbsp;
    48                 <%
    49                     }if(pageIndex<totalpage){
    50                 %>
    51                 <a href="javascript:page_nav(document.forms[0],<%=pageIndex+1%>)">下一页</a>&nbsp;&nbsp;
    52                 <a href="javascript:page_nav(document.forms[0],<%=totalpage %>) ">最后一页</a>&nbsp;&nbsp;
    53                 <%
    54                 }
    55                 %>
    分页显示关键点

    表单隐藏域传递代码

    <script type="text/javascript">
        function page_nav(frm,num){
            frm.pageIndex.value=num;
            frm.submit();
        }//go跳转函数
        function jump_to(frm,pegeno){
            var regexp=/^d+$/;
            if(!regexp.test(pegeno)){
                alert("请输入正确数字!");
                return false;
            }else{
                page_nav(frm,pegeno);
            }
            
        }
    </script>
     <form name ="searchForm" id="searchForm" action="/JDBC1/jsp/admin/newsDetailList.jsp" method="post">
    <input type="hidden" name="pageIndex" value="1"/>
    </form>
    <%
                    if(pageIndex>1){
                    %>
                    <a href="javascript:page_nav(document.forms[0],1)">首页</a>&nbsp;&nbsp;
                    <a href="javascript:page_nav(document.forms[0],<%=pageIndex-1%>)">上一页</a>&nbsp;&nbsp;
                    <%
                        }if(pageIndex<totalpage){
                    %>
                    <a href="javascript:page_nav(document.forms[0],<%=pageIndex+1%>)">下一页</a>&nbsp;&nbsp;
                    <a href="javascript:page_nav(document.forms[0],<%=totalpage %>) ">最后一页</a>&nbsp;&nbsp;
                    <%
                    }
                    %>
     <span class="page-go-form"><label>跳转至</label>
          <input type="text" name="inputPage" id="inputPage" class="page-key" />页
          <button type="button" class="page-btn" onClick='jump_to(document.forms[0],document.getElementById("inputPage").value)'>GO</button>
      </span>

    注意当页面404错误时检查路径是否正确;

  • 相关阅读:
    北京燃气IC卡充值笔记
    随机分析、随机控制等科目在量化投资、计算金融方向有哪些应用?
    量化交易平台大全
    Doctor of Philosophy in Computational and Mathematical Engineering
    Institute for Computational and Mathematical Engineering
    Requirements for the Master of Science in Computational and Mathematical Engineering
    MSc in Mathematical and Computational Finance
    万字长文:详解多智能体强化学习的基础和应用
    数据处理思想和程序架构: 使用Mbedtls包中的SSL,和服务器进行网络加密通信
    31-STM32+W5500+AIR202/302基本控制篇-功能优化-W5500移植mbedtls库以SSL方式连接MQTT服务器(单向忽略认证)
  • 原文地址:https://www.cnblogs.com/wanghongjie/p/4598621.html
Copyright © 2011-2022 走看看