用JDBC實現數據庫分頁

文章轉自:http://blog.csdn.net/zxingchao2009/archive/2010/08/11/5805375.aspx

感謝!!!

 

一、所需參數

(1)當前頁數(currentPage)

就是來指明當前到底顯示到了第幾頁

(2)每頁顯示的數目(pageSize)

比如每頁顯示20條

(3)總記錄數(totalcount)

一般可由“select count(*) from table_name”獲得

(4)總頁數(totalPage)

totalPage=((totalCount+pageSize)-1)/pageSize

或者

if(totalCount%pageSize==0)

    totalPage=totalCount/pageSize;

else

    totalPage=totalCount/pageSize+1;

注意要確保總頁數至少爲1

if(totalPage==0)

    totalPage=1;

(5)JDBC ResultSet類定義結果集的方法rs.absolute(int n);

例如:rs.absolute((currentPage-1)*pageSize);

二、下面給出一個實例

1.建立用mysql數據庫及其表person

create database person;
use person;
create table person(id varchar(20),name varchar(20),age varchar(20),sex varchar(20));

2.編寫數據庫訪問公用類DBAccess.java

 

  1.  

 

3.編寫javabean

(1)Person.java

 

  1.  

(2)PageListData.java(封裝分頁參數以及頁面表現層函數的bean)

 

  1.  

4.編寫數據訪問層ManagerPerson.java

 

  1. package com.zxc.struts.bean;  
  2. import java.sql.Connection;  
  3. import java.sql.PreparedStatement;  
  4. import java.sql.ResultSet;  
  5. import java.sql.SQLException;  
  6. import java.sql.Statement;  
  7. import java.util.ArrayList;  
  8. import java.util.HashMap;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11.   
  12. import com.zxc.struts.bean.DBAccess;  
  13. public class ManagerPerson {  
  14.   
  15.     /** 
  16.      * @param args 
  17.      */  
  18.     public static void main(String[] args) {  
  19.         // TODO Auto-generated method stub  
  20.         //往數據庫插入100條數據  
  21.         List list1=new ArrayList();  
  22.         for (int i = 1; i < 101; i++) {  
  23.             Person person = new Person();  
  24.             person.setId(String.valueOf(i));  
  25.             person.setName("A");  
  26.             person.setAge(i + 20);  
  27.             person.setSex("man");  
  28.             list1.add(person);  
  29.         }  
  30.         insertData(list1);  
  31.     }  
  32.     //返回的map中包含所需的結果集和總的記錄數  
  33.     public static Map getList(int pageSize,int currentPage){  
  34.         String sql="select * from person";  
  35.         Connection conn=null;  
  36.         PreparedStatement ps=null;  
  37.         ResultSet rs=null;  
  38.         Map result=null;  
  39.         List list=null;  
  40.         Person p=null;  
  41.         try{  
  42.             conn=DBAccess.getConnection();  
  43.             result=new HashMap();  
  44.             list=new ArrayList();  
  45.             ps=conn.prepareStatement(sql);  
  46.             rs=ps.executeQuery();  
  47.             if((currentPage-1)*pageSize!=0)  
  48.                 rs.absolute((currentPage-1)*pageSize);  
  49.             int i=0;  
  50.             while(rs.next()&&i++<pageSize){  
  51.                 p=new Person();  
  52.                 p.setId(rs.getString("id"));  
  53.                 p.setName(rs.getString("name"));  
  54.                 p.setSex(rs.getString("sex"));  
  55.                 p.setAge(Integer.parseInt(rs.getString("age")));  
  56.                 list.add(p);  
  57.                   
  58.             }  
  59.             result.put("list", list);  
  60.             rs.close();  
  61.             ps.close();  
  62.             sql="select count(*) from person";  
  63.             ps=conn.prepareStatement(sql);  
  64.             rs=ps.executeQuery(sql);  
  65.             if(rs.next()){  
  66.                 result.put("tatalcount", rs.getInt(1));  
  67.             }  
  68.             rs.close();  
  69.             ps.close();  
  70.             conn.close();  
  71.         }catch(Exception e){  
  72.             e.printStackTrace();  
  73.         }  
  74.         return result;  
  75.     }  
  76.     //將list中的數據插入到數據庫中  
  77.     public static void insertData(List list){  
  78.         String sql="insert into person values(?,?,?,?)";  
  79.         Connection conn=DBAccess.getConnection();  
  80.         PreparedStatement ps=null;  
  81.         ResultSet rs=null;  
  82.         int n=0;  
  83.         for(int i=0;i<list.size();i++){  
  84.             try{  
  85.                 Person p=(Person)list.get(i);  
  86.                 ps=conn.prepareStatement(sql);  
  87.                 ps.setString(1, p.getId());  
  88.                 ps.setString(2, p.getName());  
  89.                 ps.setString(3, String.valueOf(p.getAge()));  
  90.                 ps.setString(4,p.getSex());  
  91.                 n=ps.executeUpdate();  
  92.                 if(n==1){  
  93.                     System.out.println("插入一條數據成功!");  
  94.                 }else{  
  95.                     System.out.println("插入一條數據失敗!");  
  96.                 }  
  97.             }catch(Exception e){  
  98.                 e.printStackTrace();  
  99.             }  
  100.         }  
  101.         try{  
  102.             ps.close();  
  103.             conn.close();  
  104.         }catch(SQLException e){  
  105.             e.printStackTrace();  
  106.         }  
  107.     }  
  108.       
  109. }  

 

5.編寫業務邏輯層PaginationAction.java

 

  1. /* 
  2.  * Generated by MyEclipse Struts 
  3.  * Template path: templates/java/JavaClass.vtl 
  4.  */  
  5. package com.zxc.struts.action;  
  6.   
  7. import java.util.ArrayList;  
  8. import java.util.List;  
  9. import java.util.Map;  
  10.   
  11. import javax.servlet.http.HttpServletRequest;  
  12. import javax.servlet.http.HttpServletResponse;  
  13. import org.apache.struts.action.Action;  
  14. import org.apache.struts.action.ActionForm;  
  15. import org.apache.struts.action.ActionForward;  
  16. import org.apache.struts.action.ActionMapping;  
  17.   
  18. import com.zxc.struts.bean.ManagerPerson;  
  19. import com.zxc.struts.bean.PageListData;  
  20. import com.zxc.struts.bean.Person;  
  21.   
  22.   
  23. /**  
  24.  * MyEclipse Struts 
  25.  * Creation date: 08-10-2010 
  26.  *  
  27.  * XDoclet definition: 
  28.  * @struts.action validate="true" 
  29.  */  
  30. public class PaginationAction extends Action {  
  31.     /* 
  32.      * Generated Methods 
  33.      */  
  34.   
  35.     /**  
  36.      * Method execute 
  37.      * @param mapping 
  38.      * @param form 
  39.      * @param request 
  40.      * @param response 
  41.      * @return ActionForward 
  42.      */  
  43.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  44.             HttpServletRequest request, HttpServletResponse response) {  
  45.         // TODO Auto-generated method stub  
  46.         int currPage = request.getParameter("pages")==null?1:Integer.parseInt(request.getParameter("pages"));  
  47.         int pageSize = request.getParameter("pageSize")==null?5:Integer.parseInt(request.getParameter("pageSize"));  
  48.         Map map=ManagerPerson.getList(pageSize, currPage);  
  49.         PageListData listdata=new PageListData();  
  50.         listdata.setCount(Integer.parseInt(map.get("tatalcount")==null?"":map.get("tatalcount").toString()));  
  51.         listdata.setPage(currPage);  
  52.         listdata.setPageSize(pageSize);  
  53.         listdata.setDataArray((ArrayList)map.get("list"));  
  54.         request.setAttribute("footer", listdata.getFooter(request));  
  55.         System.out.println(listdata.getFooter(request));  
  56.         request.setAttribute("listdata", listdata);  
  57.         return mapping.findForward("success");  
  58.     }  
  59. }  

 

6.配置struts-config.properties

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">  
  3.   
  4. <struts-config>  
  5.   <form-beans />  
  6.   <global-exceptions />  
  7.   <global-forwards />  
  8.   <action-mappings >  
  9.      <action  
  10.       path="/pagination"  
  11.       type="com.zxc.struts.action.PaginationAction"  
  12.       cancellable="true" >  
  13.       <forward name="success" path="/pagesort.jsp"/>  
  14.       </action>  
  15.   </action-mappings>  
  16.   
  17.   <message-resources parameter="com.zxc.struts.ApplicationResources"/>  
  18. </struts-config>  

 

7.表現層頁面

(1)index.jsp

 

  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4. %>  
  5.   
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8.     <body>  
  9.     <form>  
  10.         <a href="<%=path%>/pagination.do">JDBC分頁練習</a>  
  11.         </form>  
  12.     </body>  
  13. </html>  

 

(2)pagesort.jsp

 

  1. <%@ page language="java" isELIgnored="false" pageEncoding="utf-8"%>  
  2. <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>  
  3. <%  
  4.     String path = request.getContextPath();  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9. <head>  
  10. <link href="<%=path%>/tefort.css" type="text/css" rel="stylesheet"/>  
  11. <link href="<%=path%>/template01.css" type="text/css" rel="stylesheet"/>  
  12. </head>  
  13.     <body>  
  14.         <form action="<%=path%>/pagination.do" method="post">  
  15.             
  16.             <table>  
  17.                 <thead>  
  18.                     <tr>  
  19.                         <td style="width:20%">  
  20.                             id  
  21.                         </td>  
  22.                         <td style="width:30">  
  23.                             name  
  24.                         </td>  
  25.                         <td style="width:25%">  
  26.                             sex  
  27.                         </td>  
  28.                         <td style="width:25%">  
  29.                             age  
  30.                         </td>  
  31.                     </tr>  
  32.                 </thead>  
  33.                 <tbody>  
  34.                     <c:if test="${not empty listdata}">  
  35.                         <c:forEach items="${listdata.dataArray}" var="data">  
  36.                         <tr>  
  37.                         <td>${data.id}</td>  
  38.                         <td>${data.name}</td>  
  39.                         <td>${data.age}</td>  
  40.                         <td>${data.sex }</td>  
  41.                         </tr>  
  42.                         </c:forEach>  
  43.                     </c:if>  
  44.                 </tbody>  
  45.             </table>  
  46.             ${footer}  
  47.         </form>  
  48.     </body>  
  49. </html>  

 

8.運行結果

在瀏覽器輸入http://localhost:8080/j2eePractice

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章