後臺分頁(MySQL分頁)

1、分頁Bean類 Pagejavascript

package com.yuu.ssh.common;
 import java.io.Serializable;
public class Page implements Serializable {
 private int pageNow = 1; // 當前頁數
 private int pageSize = 10; // 每頁顯示記錄的條數
 private int totalCount; // 總的記錄條數
 private int totalPageCount; // 總的頁數
 
 private int startPos; // 開始位置,從0開始
 
//----*****---如下-4 個參數能夠省略,有須要時再加--***----------//
 private boolean hasFirst;// 是否有首頁
 
 private boolean hasPre;// 是否有前一頁
 
 private boolean hasNext;// 是否有下一頁
 
 private boolean hasLast;// 是否有最後一頁
 
//-----------*************--------------------//
 
 public Page() {
  super();
  // TODO Auto-generated constructor stub
 }
 public Page(int totalCount, int pageNow) {
  this.totalCount = totalCount;
  this.pageNow = pageNow;
 }
 
 // 獲取數據總記錄條數
 public int getTotalCount() {
  return totalCount;
 }
 public void setTotalCount(int totalCount) {
  this.totalCount = totalCount;
 }
 
 // 獲取當前頁碼
 public int getPageNow() {
  return pageNow;
 }
 
 public void setPageNow(int pageNow) {
  this.pageNow = pageNow;
 }
 
 // 獲取每頁數據條目數
 public int getPageSize() {
  return pageSize;
 }
 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
 }
 // 得到一共有多少頁碼數
 public int getTotalPageCount() {
  totalPageCount = getTotalCount() / getPageSize();
  return (totalCount % pageSize == 0) ? totalPageCount
    : totalPageCount + 1;
 }
 
 // 獲取每頁的起始條目號碼
 public int getStartPos() {
  return (pageNow - 1) * pageSize;
 }
 
 public void setTotalPageCount(int totalPageCount) {
  this.totalPageCount = totalPageCount;
 }
 
 public void setStartPos(int startPos) {
  this.startPos = startPos;
 }
 
 //-----------******如下方法可省略*******--------------------//
 /**
  * 是不是第一頁
  */
 public boolean isHasFirst() {
  return (pageNow == 1) ? false : true;
 }
 public void setHasFirst(boolean hasFirst) {
  this.hasFirst = hasFirst;
 }
 public boolean isHasPre() {
  // 若是有首頁就有前一頁,由於有首頁就不是第一頁
  return isHasFirst() ? true : false;
 }
 public void setHasPre(boolean hasPre) {
  this.hasPre = hasPre;
 }
 public boolean isHasNext() {
  // 若是有尾頁就有下一頁,由於有尾頁代表不是最後一頁
  return isHasLast() ? true : false;
 }
 public void setHasNext(boolean hasNext) {
  this.hasNext = hasNext;
 }
 public boolean isHasLast() {
  // 若是不是最後一頁就有尾頁
  return (pageNow == getTotalCount()) ? false : true;
 }
 public void setHasLast(boolean hasLast) {
  this.hasLast = hasLast;
 }
//-----------*************--------------------// 
}

2、後臺分頁方法html

        一、Servlet 後臺JDBC分頁代碼示例java

 public List<Staff> findByPage(int pageNumber, int pageSize){
    Connection conn=null;
     PreparedStatement ps=null;
     
     String sql= "select * from tb_staff limit ?,?";      
     // limit x,y  x表明每頁的起始記錄數--表明第(x+1)頁,每頁以 x*pageSize開始; y表明每頁顯示y條數據(pageSize).
     ResultSet rs=null;    
     List<Staff> list=null;
     Dept dept=null;
     Job job=null;
     IDeptDao dao=null;
      IJobDao dao_j=null;
    try {
           conn=JDBCUtils.getConnection();
           ps=conn.prepareStatement(sql);
           ps.setInt(1, pageNumber);
           ps.setInt(2, pageSize);
           ps.executeUpdate();
   
       list = new ArrayList<Staff>();
       
       while(rs.next()){
           int did=rs.getInt(3);
               dept=dao.findDeptById(did);
               System.out.println(dept);
    
                int jid=rs.getInt(4);
                job=dao_j.findJobById(jid);
       
                Staff staff = new Staff();
                staff.setId(rs.getLong(1));
                staff.setId(rs.getInt(2));
                staff.setName(rs.getString(3)); 
                staff.setDept(dept);
                staff.setJob(job);   
                staff.setDate(rs.getString(6));
                staff.setSalary(rs.getDouble(7));
                staff.setEmail(rs.getString(8));
                staff.setPhone(rs.getString(9));
    
                list.add(staff);  
                System.out.println(list.size());   
           }
   
      } catch (SQLException e) {
             // TODO Auto-generated catch block
              e.printStackTrace();
      }finally{
           JDBCUtils.close(rs, ps, conn);
  }
      return list;
}

    2. Hibernate持久層分頁代碼示例sql

 /**
  * 查詢數據庫員工表中的總記錄數
  * @return
  */
 int getCountEmp();
 
  @Override
 public int getCountEmp() {
  // 方法一:
  Query q = sessionFactory.getCurrentSession().createQuery("from Employee");
  //總記錄數
  ScrollableResults scroll = q.scroll();  // 獲得滾動的結果集
  scroll.last();       //  滾動到最後一行
  int totalCount = scroll.getRowNumber() + 1;// 獲得滾到的記錄數,即總記錄數
  
  // 方法二:聚合函數統計
//  Query q = session.createQuery("select count(*) from Employee");
//  Long num = (Long) q.uniqueResult();
//  System.out.println(num);
  
  return totalCount;
 }
 
 /**
  * 查詢所有員工信息,分頁顯示
  * @param index 起始記錄
  * @param count 每頁顯示記錄條數
  * @return
  */
 List<Employee> getAll(int index, int count);
 
 @SuppressWarnings("unchecked")
 @Override
 public List<Employee> getAll(int index, int count) {
  Session session = sessionFactory.getCurrentSession();
  Query q = session.createQuery("from Employee");
  
  // 設置分頁參數
  q.setFirstResult(index);
  q.setMaxResults(count);
  
  // 查詢
//  q.list();
  
  return q.list();
 }

 

    3.MyBatis持久層分頁代碼示例數據庫

 int countMedia(); //統計出全部的視頻數據量
<select id="countMedia" resultType="java.lang.Integer" >
    select count(*) from t_media
 </select>
List<TMediaCustom> getMediaPage(Page page); //查詢帶分頁視頻列表
<select id="getMediaPage" parameterType="com.yuu.ssm.common.Page" resultMap="ResultMapWithBLOBs">
  select id,vname, src_id, pic_id, type_id, descript, distrit, keyword, uptime, uploader, playcount, downloadcount, collectcount
  from t_media limit #{startPos},
  #{pageSize}
 </select>

3、JSP頁面分頁代碼示例session

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>


<script type="text/javascript">
  function jumpToPage(pageNo) {
   window.location.href = "<%=request.getContextPath()%>/emp_pagelist.action?pageNow="+pageNo;
   }    
 </script>

<table id="tb_fy" border="1" align="center" width="80%" cellpadding="5" cellspacing="0">
    
  <tr>
   <td>
    <strong>頁次:${page.pageNow }/${page.totalPageCount }</strong>
    <span style="font-size: 12">共${page.totalCount }條記錄</span>
   </td>
   <td> <a href="emp_pagelist.action?pageNow=1">首頁</a> </td>
   <td> 
    <c:choose>
     <c:when test="${page.pageNow - 1 > 0}">
      <a href="emp_pagelist.action?pageNow=${page.pageNow - 1}">上一頁</a>
     </c:when>
     <c:when test="${page.pageNow - 1 <= 0}">
      <a href="emp_pagelist.action?pageNow=1">上一頁</a>
     </c:when>
    </c:choose>
   </td>
 
   <td>當前頁碼:<select name="currentPageNo">
       <option value ="1">${page.pageNow}</option>
      </select>
   </td>
   
   <td>
    <!-- 顯示超連接 -->
         <c:if test="${page.pageNow>0 }">
          <c:forEach begin="${page.pageNow }" end="${(page.pageNow+6)<=page.totalPageCount?(page.pageNow+6):page.totalPageCount}" var="i">
           <a href="javascript:jumpToPage(${i })">[${i }]</a>
      </c:forEach>
    </c:if>
   
   </td>
   
   <td> 
    <c:choose>
     <c:when test="${page.pageNow + 1 < page.totalPageCount}">
      <a href="emp_pagelist.action?pageNow=${page.pageNow + 1}">下一頁</a>
     </c:when>
     <c:when test="${page.pageNow + 1 >= page.totalPageCount}">
      <a href="emp_pagelist.action?pageNow=${page.totalPageCount}">下一頁</a>
     </c:when>
    </c:choose>
   </td>
   
   <td><a href="emp_pagelist.action?pageNow=${page.totalPageCount}">末頁</a> </td>
   <td>一共有 : ${page.totalPageCount}   頁</td>
  </tr>
 </table>

 

經常使用:在Action/Servlet中快速分頁.app

private static final int pageSize = 8;  // 每頁記錄條數ssh

rowCount 爲數據庫中,總的記錄條數。jsp

int pageCount = (rowCount % pageSize == 0) ? (rowCount / pageSize) : (rowCount / pageSize + 1);//總共有多少頁。
logger.info("--總頁數--" + pageCount+",--當前頁爲-->"+pageNow);ide

pageNow 爲 當前 顯示 頁碼,須要從頁面傳值到後臺獲取。

public class RedPayOrderQueryAction extends BaseAction {
    private static Logger logger = LoggerFactory.getLogger(RedPayOrderQueryAction.class);
    	private IRedPayService redPayService;
	
	private static final int pageSize = 8;
	
	public IRedPayService getRedPayService() {
		return redPayService;
	}

	public void setRedPayService(IRedPayService redPayService) {
		this.redPayService = redPayService;
	}



	public ActionForward getAllOrderInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		request.setCharacterEncoding("UTF-8");
		
		
		
		String phoneNo = request.getParameter("phoneNo").trim();
		logger.info("手機號碼爲:"+phoneNo);

		String orderNo = request.getParameter("orderNo").trim();
		logger.info("訂單號爲:"+orderNo);
		
		String s = request.getParameter("status");
		logger.info("訂單狀態爲:"+s);
		
		if(phoneNo==null){
			phoneNo=""; //以防請求路徑沒有phoneNo參數。
		}
		if(orderNo==null){
			orderNo=""; //以防請求路徑沒有orderNo參數。
		}
		
		int pageNow = Integer.valueOf(request.getParameter("pageNow")); // 當前頁碼
		int countNow = (pageNow - 1) * pageSize; // 每頁起始記錄數。
		
		String beginTime = request.getParameter("beginTime");
		logger.info("查詢開始時間-->"+beginTime);
		String endTime = request.getParameter("endTime");
		logger.info("查詢結束時間-->"+endTime);
		
		if(beginTime==null||beginTime.equals("")){
			beginTime="2000-01-01 00:00:00";
			logger.info("頁面查詢沒有設置開始查詢時間,此時開始時間默認值設置爲:"+beginTime);
		}
		if(endTime==null||endTime.equals("")){
			Date date = new Date();
			DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			endTime = df.format(date);
			logger.info("頁面查詢沒有設置結束查詢時間,此時結束時間默認值設置爲:"+endTime);
		}
		
		int rowCount = 0;
		List<RedPacketPay>orderList =null;
		
		if(phoneNo.length()>0){ // 根據用戶手機號碼查詢。
			rowCount = redPayService.getCountNumByPhone(phoneNo, beginTime, endTime,s).size(); // 總共記錄數。
			orderList =redPayService.findOrderPageByPhone(phoneNo, beginTime, endTime, countNow, pageSize,s);
		}
		else if(orderNo.length()>0){ // 根據訂單號碼查詢。 
			rowCount = redPayService.findOrderByOrderNo(orderNo, beginTime, endTime,s).size();
			orderList = redPayService.findOrderPageByOrderNo(orderNo, beginTime, endTime, countNow, pageSize,s);
			
		}
		else{ // 查詢全部訂單。
			
			rowCount = redPayService.getCountNumByAllOrder(beginTime, endTime,s); // 總記錄條數。
			
			orderList=redPayService.findAllOrder(beginTime,endTime,countNow, pageSize,s);
		}
		
		
		
		int pageCount = (rowCount % pageSize == 0) ? (rowCount / pageSize) : (rowCount / pageSize + 1);//總共有多少頁。
		logger.info("--總頁數--" + pageCount+",--當前頁爲-->"+pageNow);

		request.setAttribute("orderList", orderList);
		logger.info("--訂單列表orderList的值--" + orderList);
		request.setAttribute("phoneNo", phoneNo);
		request.setAttribute("orderNo", orderNo);
		request.setAttribute("pageNow", pageNow);
		request.setAttribute("pageCount", pageCount);
		request.setAttribute("beginTime", beginTime);
		request.setAttribute("endTime", endTime);
		request.setAttribute("statusCode", s);
		
		
		return mapping.findForward("success");
	}


}

JSP頁面寫法:

======================================================================================
<div id="d3" style="margin-left: 20px;text-align: center;">
    		<div id="d_one">
				<!-- 顯示首頁 -->
		      			<c:choose>
		      				<c:when test="${pageNow==1}">
		      					首頁
		      				</c:when>
		      				<c:when test="${pageNow==null}">
		      					首頁
		      				</c:when>
		      				<c:otherwise>
		      					<a href="javascript:jumpToPage(1,'${userName}','${caseStatus}')">首頁</a>
		      				</c:otherwise>
		      			</c:choose>
		      
		     			<!-- 顯示上一頁 -->
		      			<c:choose>
		      				<c:when test="${pageNow>1}">
		      					<a href="javascript:jumpToPage(${pageNow-1 },'${userName}','${caseStatus}')">上一頁</a>
		      				</c:when>
		      				<c:otherwise>
		      					上一頁
		      				</c:otherwise>
		      			</c:choose>
		      			<!-- 顯示下一頁 -->
					  	<c:choose>
						  	<c:when test="${pageNow < pageCount}">
						  		<a href="javascript:jumpToPage(${pageNow+1 },'${userName}','${caseStatus}')">下一頁</a>
						     </c:when>
						  	<c:otherwise>
						  	  下一頁
						  	</c:otherwise>
					  	</c:choose>
			  
			  			<!-- 顯示尾頁 -->
					  	<c:choose>
						  	<c:when test="${pageNow == pageCount}">
						  		尾頁
						  	</c:when>
						  	<c:otherwise>
						  		<a href="javascript:jumpToPage(${pageCount },'${userName}','${caseStatus}')">尾頁</a>
						  	</c:otherwise>
					  	</c:choose>
	  		</div>
	  		<div id="d_two">
	  			<c:choose>
				  	<c:when test="${pageNow !=null }">
				  		<strong>頁次:${pageNow }/${pageCount }</strong>&nbsp;&nbsp;
				  	</c:when>
				  	<c:otherwise>
				  		<strong>頁次:0/0</strong>&nbsp;&nbsp;
				  	</c:otherwise>
			  	</c:choose>
			  	<c:choose>
				  	<c:when test="${pageNow !=null }">
				  		<span style="font-size: 12">共${rowCount }條記錄</span>
				  	</c:when>
				  	<c:otherwise>
				  		<span style="font-size: 12">共0條記錄</span>
				  	</c:otherwise>
			  	</c:choose>
	  		</div>
    	</div>
===========================================================================================

 <table id="tb_fy" border="1" align="center" width="80%" cellpadding="5" cellspacing="0">
  	 
		<tr>
			<td>
				<strong>頁次:${page.pageNow }/${page.totalPageCount }</strong>
				<span style="font-size: 12">共${page.totalCount }條記錄</span>
			</td>
			<td> <a href="emp_pagelist.action?pageNow=1">首頁</a> </td>
			<td> 
				<c:choose>
					<c:when test="${page.pageNow - 1 > 0}">
						<a href="emp_pagelist.action?pageNow=${page.pageNow - 1}">上一頁</a>
					</c:when>
					<c:when test="${page.pageNow - 1 <= 0}">
						<a href="emp_pagelist.action?pageNow=1">上一頁</a>
					</c:when>
				</c:choose>
			</td>
	
			<td>當前頁碼:<select name="currentPageNo">
							<option value ="1">${page.pageNow}</option>
						</select>
			</td>
			
			<td>
				<!-- 顯示超連接 -->
		      	<c:if test="${page.pageNow>0 }">
			     		<c:forEach begin="${page.pageNow }" end="${(page.pageNow+6)<=page.totalPageCount?(page.pageNow+6):page.totalPageCount}" var="i">
					    		<a href="javascript:jumpToPage(${i })">[${i }]</a>
						</c:forEach>
				</c:if>
			
			</td>
			
			<td> 
				<c:choose>
					<c:when test="${page.pageNow + 1 < page.totalPageCount}">
						<a href="emp_pagelist.action?pageNow=${page.pageNow + 1}">下一頁</a>
					</c:when>
					<c:when test="${page.pageNow + 1 >= page.totalPageCount}">
						<a href="emp_pagelist.action?pageNow=${page.totalPageCount}">下一頁</a>
					</c:when>
				</c:choose>
			</td>
			
			<td><a href="emp_pagelist.action?pageNow=${page.totalPageCount}">末頁</a> </td>
			<td>一共有 : ${page.totalPageCount}   頁</td>
		</tr>
	</table>

===============================================================================



    		<table cellpadding="0" cellspacing="0" border="0" width="100%"
				style="font-size: 12px; margin-left: 20px;">
				<tr height="50px"  align="center" style="background: #87CEEB;font-size: 15px;">
					<td width="3%">
						序號
					</td>
					<td width="12%">
						案件號


				</tr>
 				<c:forEach items="${caseList}" var="c" varStatus="status">
					<tr height="30px;" 
						<c:if test="${status.count%2==0}"> bgcolor="#ffffff" </c:if> align="center">
						<td>${status.index + pageNow*10-10+1}</td>
相關文章
相關標籤/搜索