Java分頁查詢(真分頁)

2021-08-02 04:57:51 字數 2227 閱讀 2074

在開發過程中,我們經常會從資料庫中查詢資料,然後在客戶端顯示出來。當資料少時,可以在乙個頁面顯示。當我們查詢幾百條以上資料,直接顯示在乙個頁面上,不僅瀏覽不方便,查詢效率也會受到影響,這是,我們就可以使用分頁查詢來解決這個問題。

分析上面這個頁面,想要實現分頁,我們在頁面中需要顯示的資料有:

本頁的資料列表

recordlist

當前頁currentpage

總頁數pagecount

每頁顯示多少條

pagesize

總記錄數

recordcount

頁碼列表的開始索引

beginpageindex

頁碼列表的結束索引

endpageindex

實現分頁需要顯示這麼多資料,所以我們就可以為分頁功能來封裝乙個pagebean實體,用來接收頁面傳來的引數,以及為action提供從資料庫查詢出來的資料。

我們可以把頁面顯示的資料分為三類:

1.指定的或是頁面引數:currentpage,pagesize.

2.資料庫查詢的資料:recordcount,recordlist.

3.通過計算得到:pagecount,beginpageindex,endpageindex.

這樣就可以只接收前4個必要的屬性,自動計算出其他3個屬性的值。

我們可以先分析一下大概的思路,首先jsp頁面負責顯示資料,action用來接收頁面傳來的引數,並呼叫service準備需要的資料,service實現了資料訪問的功能,從資料庫中查詢出需要的資料,通過封裝的pagebean實體返回給action。

/** 分頁功能中一頁的資訊 */

public class pagebean

//總頁數多於10頁,則顯示當前頁附近的共10個頁碼

else

//當後面的頁碼不足5個時,則顯示後10個頁碼

if(endpageindex > pagecount)

} }

//這裡是get,set

}

action中準備分頁資訊的**

// **********=分頁用的引數**********==

private int pagenum = 1;// 當前頁

private int pagesize = 10;// 每頁顯示多少條記錄

//這裡省略了get,set方法

// 準備分頁資訊(將pagebean放在棧頂)

pagebean pagebean = replyservice.getpagebeanbytopic(pagenum,pagesize,topic);

actioncontext.getcontext().getvaluestack().push(pagebean);

service中查詢資料庫的**

public pagebean getpagebeanbyforum(int pagenum, int pagesize, forum forum)
jsp頁面接收資料(這裡只顯示了分頁控制項的實現,當前頁顯示的資料列表recordlist繫結到對應的位置就可以了。):

頁次:$/$頁  

每頁顯示:$條   總記錄數:$條

src="$/style/blue/images/pageselector/firstpage.png" //>$$

src="$/style/blue/images/pageselector/lastpage.png" //> 轉到: $

到現在,我們已經實現了乙個簡單的分頁查詢功能。那麼我們繼續想,如果我們其他頁面實現分頁查詢功能,還需要再copy一遍上面的**嗎?這麼做顯然不是科學的方法,我們就會繼續封裝一些公共的**,靈活的供各個功能呼叫。比如說現在能想到的優化的地方:

1.action中公共的分頁引數

2.service中除了查詢的hql語句和引數不同,具體的套路都差不多,我們可不可以傳遞hql和對應的引數,呼叫乙個公共的方法?

3.jsp頁面上相同的分頁**,寫在乙個公共的頁面中,需要分頁時,直接引用這個頁面就好了。

真分頁和假分頁

假分頁 從資料庫一次性取出所有資料繫結到控制項上,再將所有資料根據每頁顯示記錄條數進行分頁。使用gridview控制項來達到分頁的功能 資料繫結 using system using system.collections.generic using system.linq using system....

Jsp分頁例項 真分頁

網頁的分頁功能的實現比較簡單,實現方法也多種多樣。今天總結乙個簡單的jsp真分頁例項。首先,提到分頁就要先明確乙個概念,何為真分頁何謂假分頁。假分頁 一次性從資料庫讀出表的所有資料一次性的返回給客戶端,由js來控制每一頁的顯示。真分頁 由程式控制,每一次只返回一頁大小的資料,顯示到客戶端。由此可以很...

EF導航屬性真分頁查詢

在最近做的人事檔案重構專案中,由於需求要求不要用檢視 儲存過程等,而且這個專案資料庫欄位的數量實在是令人髮指,就我負責的綜合資訊查詢來說,乙個頁面要顯示7張表的資料,欄位加起來都百八十個了。首先看一下資料庫結構 basicinfomation是基本資訊表,主鍵是nowtechnicalrecords...