分頁的探索

     這幾天在做一個項目的時候發現頁面顯示的數據量比較大,然後就想給它做一個分頁的功能。本來哦,分頁的原理是比較簡單的。我所瞭解的大概有兩種:內存分頁和數據庫分頁。

     內存分頁就是一次性把所有的數據都查出來,然後將其緩存。在使用的時候傳入頁號就可以獲得當前頁的數據了。但是這個對內存的要求比較高,特別是大數據量的時候。而我的這個項目的數據量又確實比較大,所以當時就否定了這個方法。

     數據庫分頁就是一次只查出一頁的數據,然後需要的時候再進行一次查詢。這種方式不同的數據庫就有不同的實現了,如Oralce一般是採用rownum這個參數來控制,而Mysql可以採用limit來實現分頁。當然肯定還有其他的方法,不過我沒有了解過。雖然這樣的話比較節省內存了,但是在數據庫連接方面需要消耗較多的資源。不過就我當時的想法來說,我的第一選擇就是這個。

 

     既然選定了方案,就開始動手了。真的是想想簡單啊,動手的時候發現還有好多的事情沒考慮。當然也是個人習慣的問題,我一直不喜歡在url後面添加太多的參數。所以就只用了一個參數來表示請求的頁面的頁號。跑起來的時候發現即使只是分頁,還是需要其他的一些參數。當時一想就把這些個參數放入到Session中,不過就爲了一個簡單的分頁將數據緩存到Session貌似不太好。我糾結了好久,還是決定將參數寫在url的後面。

     本以爲這樣就可以了,不過數據顯示出來才曉得,我的最終展現的數據在展現之前和數據庫查詢之後是做過處理的。除了去重以外還有一些格式的處理。這樣顯示的數據就遠小於從數據庫中查出的數據。本來我的PageSize定的是50,然後顯示的時候可能只有幾條了。悲劇啊!! 沒想到還有這一手的,剛寫好的要重新來過。

 

      這個時候沒什麼心情寫下去了,就去網上查了一下。發現了一個比較牛逼的標題:目前最好的JSP分頁技術。點擊進去看了下,確實講的不錯。有代碼,有解釋。看了以後我就想照着這個實現一下,選的是他說的最好的分頁技術。不過把我整的是好慘的哦,因爲光是重寫ResultSet的所有方法都花了我半個多小時,然後還有其他的獨有的方法。最後發現這個方法雖然有一定的好處,但是還是要不停的查數據庫和我剛剛被證明不行的方案是一樣的,更悲劇了我。

 

      鎮定思痛,我又重新考慮了一下分頁的方案。其實也沒什麼好想的,只有第一種了。把數據取出來以後,存入到session中。接着就根據頁號的不同來做處理了。這個快速的完成了。

 

      寫的一大推的亂七八糟的,說是技術研究還不如說是記流水賬呢。不過我最想說的是:技術是很重要,它能實現我想的,但是找到真正可能的方案更重要,否則技術也找不到方向。

發佈了29 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章