更新時間:2020-10-20 17:05:26 來源:動力節(jié)點 瀏覽1867次
相信大家在學習javaweb時,會遇到需要分頁顯示的情況。當數(shù)據(jù)量太多,又同時顯示在一個頁面的話,不僅可能會造成內(nèi)存溢出,還會影響到用戶體驗,這個時候就需要實現(xiàn)javaweb分頁顯示的功能了。那么javaweb分頁顯示該怎樣實現(xiàn),怎么操作呢?
分頁功能在網(wǎng)頁中是非常常見的一個功能,其作用也就是將數(shù)據(jù)分割成多個頁面來進行顯示,下面給出兩個javaweb分頁顯示方法。
一、借助數(shù)組進行分頁
原理:進行數(shù)據(jù)庫查詢操作時,獲取到數(shù)據(jù)庫中所有滿足條件的記錄,保存在應用的臨時數(shù)組中,再通過List的subList方法,獲取到滿足條件的所有記錄。
實現(xiàn):首先在dao層,創(chuàng)建StudentMapper接口,用于對數(shù)據(jù)庫的操作。在接口中定義通過數(shù)組分頁的查詢方法,如下所示:

方法很簡單,就是獲取所有的數(shù)據(jù),通過list接收后進行分頁操作。創(chuàng)建StudentMapper.xml文件,編寫查詢的sql語句:

可以看出再編寫sql語句的時候,我們并沒有作任何分頁的相關(guān)操作。這里是查詢到所有的學生信息。接下來在service層獲取數(shù)據(jù)并且進行分頁實現(xiàn),定義IStuService接口,并且定義分頁方法:
List
通過接收currPage參數(shù)表示顯示第幾頁的數(shù)據(jù),pageSize表示每頁顯示的數(shù)據(jù)條數(shù)。創(chuàng)建IStuService接口實現(xiàn)類StuServiceIml對方法進行實現(xiàn),對獲取到的數(shù)組通過currPage和pageSize進行分頁:

通過subList方法,獲取到兩個索引間的所有數(shù)據(jù)。這種方法實現(xiàn)javaweb分頁操作的缺點:數(shù)據(jù)庫查詢并返回所有的數(shù)據(jù),而我們需要的只是極少數(shù)符合要求的數(shù)據(jù)。當數(shù)據(jù)量少時,還可以接受。當數(shù)據(jù)庫數(shù)據(jù)量過大時,每次查詢對數(shù)據(jù)庫和程序的性能都會產(chǎn)生極大的影響。
二、借助Sql語句進行分頁
在了解到通過數(shù)組分頁的缺陷后,我們發(fā)現(xiàn)不能每次都對數(shù)據(jù)庫中的所有數(shù)據(jù)都檢索。然后在程序中對獲取到的大量數(shù)據(jù)進行二次操作,這樣對空間和性能都是極大的損耗。所以我們希望能直接在數(shù)據(jù)庫語言中只檢索符合條件的記錄,不需要在通過程序?qū)ζ渥魈幚?。這時,Sql語句來實現(xiàn)javaweb分頁技術(shù)。
實現(xiàn):通過sql語句實現(xiàn)分頁也是非常簡單的,只是需要改變我們查詢的語句就能實現(xiàn)了,即在sql語句后面添加limit分頁語句。首先還是在StudentMapper接口中添加sql語句查詢的方法,如下:

然后在StudentMapper.xml文件中編寫sql語句通過limiy關(guān)鍵字進行分頁:

接下來還是在IStuService接口中定義方法,并且在StuServiceIml中對sql分頁實現(xiàn)。sql分頁語句如下:

所以在service中計算出currIndex:要開始查詢的第一條記錄的索引。結(jié)果:從輸出結(jié)果可以看出和數(shù)組分頁的結(jié)果是一致的,因此sql語句的分頁也是沒問題的。
用SQL語句來進行javaweb分頁顯示的缺點:雖然這里實現(xiàn)了按需查找,每次檢索得到的是指定的數(shù)據(jù)。但是每次在分頁的時候都需要去編寫limit語句,很冗余。而且不方便統(tǒng)一管理,維護性較差。
這兩種javaweb分頁顯示實現(xiàn)方法是需要大家掌握的,但分頁顯示的方法不止借助數(shù)組和SQL語句,還可以用攔截器實現(xiàn),大家可以在javaweb教程中學習到所有分頁顯示的方法,并加以練習,相信朋友們都可以掌握javaweb的相關(guān)技能。