成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析Hibernate在JSP下的分頁技術

開發(fā) 后端
本文主要解析Hibernate在JSP下的分頁技術,Hibernate提供了一個支持跨系統(tǒng)的分頁機制,這樣無論底層是什么樣的數(shù)據庫都能用統(tǒng)一的接口進行分頁操作。

分頁在任何系統(tǒng)中都是非常頭疼的事情,有的數(shù)據庫在語法上支持分頁,而有的數(shù)據庫則需要使用可滾動游標來實現(xiàn),并且在不支持可滾動游標的系統(tǒng)上只能使用單向游標逐步接近要取得的數(shù)據。Hibernate提供了一個支持跨系統(tǒng)的分頁機制,這樣無論底層是什么樣的數(shù)據庫都能用統(tǒng)一的接口進行分頁操作。本文講述的是JSP下的Hibernate分頁技術。

這是我知道的代碼最少且最簡潔的一種Hibernate分頁技術了,自己懶,所以拼命減少代碼量,呵呵。下面用人能看得懂的語言細說一下,關于Hibernate的分頁技術,無外乎兩種:

1. 從數(shù)據庫中取得記錄,在內存中再劃分。但如果遇到記錄數(shù)很大的時候效率很成問題。

2. 采用Hibernate的物理分頁,每次只是取一頁。從客戶端傳進來的是第幾頁和每頁多少條記錄,要首先查詢符合記錄的總記錄數(shù),再根據總記錄數(shù)和當前頁,每頁記錄數(shù)可以算出要取的是數(shù)據庫中的第幾條記錄。但2次查詢不可避免了。

所以總結了兩種方式的優(yōu)劣,如果數(shù)據量不是非常大的話(百萬以上),采用***種方法,否則可選擇第二種。由于我要操作的數(shù)據庫信息量沒有達到大的標準,所以我采用了***種方法,下面細說。

首先看一下我的一個action:

  1. public ActionForward queryZcDoc(ActionMapping mapping, ActionForm form,  
  2.   HttpServletRequest request, HttpServletResponse response)  
  3. {  
  4.   IZcDocService zcDocService=(IZcDocService)     
  5.   Application.getInstance().getBean("zcDocServiceProxy");  
  6.   List docList=zcDocService.queryZcDoc();  
  7.   request.setAttribute("doc", subMessList);  
  8.   return mapping.findForward("queryDoc");  

很簡單的代碼,就是查詢數(shù)據,扔到一個List里面,然后setAttribute,再在jsp頁面顯示就可以了。

接下來談分頁,考慮到了簡潔性和通用性,我把分頁的代碼單獨封裝到了一個類里面去,下面看看這個類:

  1. public class Fenye {  
  2. public List fenye(ActionMapping mapping, ActionForm form,  
  3. HttpServletRequest request, HttpServletResponse response){  
  4. List list=(ArrayList) request.getAttribute("list");  
  5. /*  

這里有人可能就看不懂了,為什么要帶這些參數(shù)?因為我上面的action方法是分頁之前的方法,所以不能看出來。

下面貼一下用到分頁之后的action方法:

  1. public ActionForward queryZcDoc(ActionMapping mapping, ActionForm form,  
  2. HttpServletRequest request, HttpServletResponse response) {  
  3. IZcDocService zcDocService=(IZcDocService)Application.getInstance().  
  4. getBean("zcDocServiceProxy");  
  5. List docList=zcDocService.queryZcDoc();  
  6. request.setAttribute("list", docList);  
  7. List subMessList=new Fenye().fenye(mapping, form, request, response);  
  8. request.setAttribute("doc", subMessList);  
  9. return mapping.findForward("queryDoc");  
  10. }  

和上面的一比較,其實就多了兩行代碼,為的就是保持頁面的簡潔性而使用調用的方法,然后再將需要的數(shù)據返回。那接著往下看:

  1. */  
  2.  List subMessList=null; //這個到時候存的是用分頁技術之后的要顯示的記錄  
  3.   int showCount =5;   //每頁顯示的記錄數(shù)。  
  4.   int showPage = 1;   //當前顯示頁碼數(shù)。  
  5.   int size =list.size();   //所取得的數(shù)據的總條數(shù)。  
  6.   int pageCount = (size-1)/showCount + 1; //需要顯示的總頁數(shù)  
  7.   if(size  

到了這里,java代碼就寫完了,不多吧加括號一共33行。接下來就要到jsp里面去顯示了。也是為了頁面的整潔和通用性,我把分頁顯示的東東放到了一個jsp里面。下面看這個jsp:

  1. <%@ page language="java" pageEncoding="gb18030"%>  
  2. <div align=center>  
  3. <br>  
  4. <%  
  5. String method=request.getParameter("method"); 

method這個參數(shù)呢,是要區(qū)別對待具體那個action的那個方法

  1. String action=request.getParameter("action"); 

action這個參數(shù)的作用,看下面就知道了

  1. int showPage = ((Integer)(request.getAttribute("showPage"))).intValue();  
  2. int size = ((Integer)(request.getAttribute("size"))).intValue();  
  3. int pageCount = ((Integer)(request.getAttribute("pageCount"))).intValue();  
  4. int page1=showPage-1;  
  5. int page2=showPage+1;  
  6. int LastPage=pageCount;  
  7. %>  
  8. <%    
  9. out.println("總共有"+size+"條記錄 ");  
  10.      out.println("總共有"+pageCount+"頁 ");  
  11. out.println("當前是第"+showPage+"頁 ");  
  12. if(showPage > 1)  
  13. {  
  14. out.println("<a href='"+action+".do?method="+method+"&page=1'>***頁</a>");    
  15. }  
  16. else  
  17. {  
  18. out.println("***頁");  
  19. }  
  20. %>    
  21.          <%  
  22. if(showPage > 1)    
  23. {  
  24.     out.println("<a href='"+action+".do?method="+method+"&page="+page1+"'>上一頁</a>");    
  25. }  
  26.    else  
  27. {             
  28.     out.println("上一頁");    
  29.        }  
  30. %>  
  31.         <%  
  32. if(showPage < pageCount)    
  33. {  
  34. out.println("<a href='"+action+".do?method="+method+"&page="+page2+"'>下一頁</a>");    
  35. }  
  36. else  
  37. {  
  38. out.println("下一頁");    
  39. }   
  40. %>  
  41. <%  
  42. if(showPage<pageCount)    
  43. {  
  44.           out.println("<a href='"+action+".do?method="+method+"&page="+LastPage+"'>尾頁</a>");    
  45. }  
  46.          else    
  47. {  
  48.    out.println("尾頁");  
  49.          }  
  50. %>  
  51. </div>  

關于這個jsp的代碼,不用解釋太多了吧。再有就是具體的顯示頁面中,用<jsp:include page="../fenye.jsp?action=link"></jsp:include>語句將它包含到相應為止就可以了。

【編輯推薦】

  1. 使用 Struts 2 開發(fā) RESTful 服務
  2. Marc Fasbinder 評論專欄: *** BPM 入門方法
  3. SOA 的面向流程的建模系列之三: 用例建模
  4. 基于CBM, SIMM 和SOMA的SOA***實踐
  5. 對Hibernate中get()與load()不同點分析
責任編輯:仲衡 來源: ddvip
相關推薦

2009-02-11 09:37:32

Hibernate分頁技術JSP

2009-06-11 14:40:59

Hibernate分頁Hibernate查詢

2009-07-01 10:01:33

JSP分頁查詢MySQL數(shù)據庫

2009-09-21 18:13:11

Hibernate S

2009-09-23 10:19:08

Hibernate分頁

2009-07-20 16:18:54

iBatis分頁Hibernate式的

2009-09-21 13:42:47

Hibernate查詢

2009-06-04 10:58:15

strutshibernate分頁

2009-09-23 17:00:07

Hibernate持久

2009-09-22 10:50:04

Hibernate c

2009-06-05 09:52:25

struts分頁Hibernate

2009-09-24 08:48:54

Hibernate技術

2009-07-03 09:35:57

Struts2 JSP

2009-07-03 14:23:49

JSP數(shù)據分頁

2009-06-03 10:02:53

Hibernate批量刪除

2009-09-23 15:12:41

Hibernate視圖

2009-06-16 16:27:22

Hibernate優(yōu)化

2009-07-02 16:56:51

JSP技術

2009-07-02 13:10:09

JSP技術

2009-06-12 15:09:01

Hibernate優(yōu)化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品久久久 | 黄色大片免费看 | 美女黄网站视频免费 | 欧美片网站免费 | 美女久久久久久久 | 精品在线视频播放 | 国产精品视频免费观看 | sese视频在线观看 | 99成人| 涩涩视频在线播放 | av影音资源 | 亚洲国产成人在线视频 | 国产亚洲网站 | 精品福利一区二区三区 | 亚洲精品国产综合区久久久久久久 | 国产精品久久久久久久粉嫩 | 国产精品射 | 欧美综合在线观看 | 色婷婷久久久久swag精品 | 在线免费观看黄色av | 色噜噜狠狠色综合中国 | 欧美一区免费 | 成人精品一区二区 | 97视频精品 | 福利国产| 日韩视频专区 | 成人免费视频网站在线看 | 永久免费视频 | 2020国产在线 | www.4虎影院| 国产亚洲精品久久19p | 亚洲精品区 | 视频一区在线播放 | 黄色免费av | 亚洲区一区二 | 亚洲一区二区久久 | 午夜小电影 | 日韩在线免费视频 | 欧美日韩视频在线播放 | 日本手机看片 | 手机看黄av免费网址 |