displaytag實現記憶體分頁

2021-05-23 18:27:52 字數 2241 閱讀 3844

displaytag用來實現記憶體分頁的確很方便,但是當列表資料太大,就不適宜一次過讀出來記憶體進行分頁了。displaytag當然也支援進行資料庫分頁,基本上主要是實現org.displaytag.pagination.paginatedlist介面,並且通過hibernate的相應方法進行查詢就行。

本專案是struts2,hibernate,spring主流框架結合開發的。實現資料庫分頁的步驟為:

1.實現paginatedlist介面

paginatedlist的**為:

1.public inte***ce paginatedlist

2.從以上**可以知道,此介面應該有相應的成員變數,那麼在實現這個介面的同時,要補充定義好相應的變數。

2.在hibernate層實現分頁查詢資料庫

hibernate支援分批對資料庫進行查詢,這裡是使用query介面:

1.        session s=null;

2.        query query=null;

3.       

4.        string querystring="select o.id,o.icityid,o.sname,o.ipublishcount,o.dregisterdate,r.sregionname from tbowneruser as o,tbregion as r " +

5.        " where o.erole='owner' and o.icityid=r.id order by o.icityid";

6.        try catch (exception e) finally catch (exception e)

24.        }

其中,實現分頁查詢的主要是:

1.query.setfirstresult((pagenumber - 1) * pagesize);

2.query.setmaxresults(pagesize);

setfirstresult是指定這次查詢開始的記錄數,setmaxresults是指定一次查詢所要查詢出的記錄條數。每次查詢都只會讀取pagesize大小的資料出去,那麼就節省了很多記憶體空間了。

3.在action中設定分頁相關的引數

displaytag是用「page」這個引數來實現頁數的傳遞的,所以request.getparameter("page")獲得當前頁號。listpagination list=new listpagination()為自己實現了paginatedlist的類,在action中要把整個列表大小、當前頁數、每頁記錄數等資訊設定給自己實現了paginatedlist的類,之後就可以直接把這個list傳遞給displaytag進行輸出了。

4. displaytag顯示

這裡只需要把上面設定好的list交給display:table的name屬性進行顯示就可以。

1.2.

至此就簡單的實現了記憶體分頁,每次翻頁都會查詢一次資料庫,雖然查詢資料庫的次數增加了,但是對於大list來說,能夠節省不少記憶體空間。

memcpy函式的實現及記憶體重疊問題的分析

函式原型 void memcpy char dest,const char src,size t n 標頭檔案 include或 include 引數 1.memcpy中的三個引數分別為目標字串 char dest。2.源字串 const char src const 這裡const是對src所指向...

記憶體池實現

記憶體池實現 話說一直想找乙個別人寫好的使用,可惜沒什麼人會拿這小東西發布,只好自寫乙個。1.多級鍊錶分配池 我不知道這種設計的具體學名是什麼,這部分的內容也許你去看 stl原始碼分析 的有關章節更合適一些,這裡我只能用我粗陋的語言描述一下。記憶體池,完全可以從字面上理解為從池子裡申請記憶體,釋放的...

記憶體對映檔案實現共享記憶體

記憶體對映檔案程序間共享記憶體 記憶體對映檔案的另乙個功能是在程序間共享資料,它提供了不同程序共享記憶體的乙個有效 且簡單的方法。後面的許多例子都要用到共享記憶體。共享記憶體主要是通過對映機制實現的。windows 下程序的位址空間在邏輯上是相互隔離的,但在物理上卻是重疊的。所謂的重 對映檔案物件時...