更新時(shí)間:2020-10-20 17:05:26 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1506次
相信大家在學(xué)習(xí)javaweb時(shí),會(huì)遇到需要分頁(yè)顯示的情況。當(dāng)數(shù)據(jù)量太多,又同時(shí)顯示在一個(gè)頁(yè)面的話,不僅可能會(huì)造成內(nèi)存溢出,還會(huì)影響到用戶體驗(yàn),這個(gè)時(shí)候就需要實(shí)現(xiàn)javaweb分頁(yè)顯示的功能了。那么javaweb分頁(yè)顯示該怎樣實(shí)現(xiàn),怎么操作呢?
分頁(yè)功能在網(wǎng)頁(yè)中是非常常見(jiàn)的一個(gè)功能,其作用也就是將數(shù)據(jù)分割成多個(gè)頁(yè)面來(lái)進(jìn)行顯示,下面給出兩個(gè)javaweb分頁(yè)顯示方法。
一、借助數(shù)組進(jìn)行分頁(yè)
原理:進(jìn)行數(shù)據(jù)庫(kù)查詢操作時(shí),獲取到數(shù)據(jù)庫(kù)中所有滿足條件的記錄,保存在應(yīng)用的臨時(shí)數(shù)組中,再通過(guò)List的subList方法,獲取到滿足條件的所有記錄。
實(shí)現(xiàn):首先在dao層,創(chuàng)建StudentMapper接口,用于對(duì)數(shù)據(jù)庫(kù)的操作。在接口中定義通過(guò)數(shù)組分頁(yè)的查詢方法,如下所示:
方法很簡(jiǎn)單,就是獲取所有的數(shù)據(jù),通過(guò)list接收后進(jìn)行分頁(yè)操作。創(chuàng)建StudentMapper.xml文件,編寫查詢的sql語(yǔ)句:
可以看出再編寫sql語(yǔ)句的時(shí)候,我們并沒(méi)有作任何分頁(yè)的相關(guān)操作。這里是查詢到所有的學(xué)生信息。接下來(lái)在service層獲取數(shù)據(jù)并且進(jìn)行分頁(yè)實(shí)現(xiàn),定義IStuService接口,并且定義分頁(yè)方法:
List
通過(guò)接收currPage參數(shù)表示顯示第幾頁(yè)的數(shù)據(jù),pageSize表示每頁(yè)顯示的數(shù)據(jù)條數(shù)。創(chuàng)建IStuService接口實(shí)現(xiàn)類StuServiceIml對(duì)方法進(jìn)行實(shí)現(xiàn),對(duì)獲取到的數(shù)組通過(guò)currPage和pageSize進(jìn)行分頁(yè):
通過(guò)subList方法,獲取到兩個(gè)索引間的所有數(shù)據(jù)。這種方法實(shí)現(xiàn)javaweb分頁(yè)操作的缺點(diǎn):數(shù)據(jù)庫(kù)查詢并返回所有的數(shù)據(jù),而我們需要的只是極少數(shù)符合要求的數(shù)據(jù)。當(dāng)數(shù)據(jù)量少時(shí),還可以接受。當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)量過(guò)大時(shí),每次查詢對(duì)數(shù)據(jù)庫(kù)和程序的性能都會(huì)產(chǎn)生極大的影響。
二、借助Sql語(yǔ)句進(jìn)行分頁(yè)
在了解到通過(guò)數(shù)組分頁(yè)的缺陷后,我們發(fā)現(xiàn)不能每次都對(duì)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都檢索。然后在程序中對(duì)獲取到的大量數(shù)據(jù)進(jìn)行二次操作,這樣對(duì)空間和性能都是極大的損耗。所以我們希望能直接在數(shù)據(jù)庫(kù)語(yǔ)言中只檢索符合條件的記錄,不需要在通過(guò)程序?qū)ζ渥魈幚怼_@時(shí),Sql語(yǔ)句來(lái)實(shí)現(xiàn)javaweb分頁(yè)技術(shù)。
實(shí)現(xiàn):通過(guò)sql語(yǔ)句實(shí)現(xiàn)分頁(yè)也是非常簡(jiǎn)單的,只是需要改變我們查詢的語(yǔ)句就能實(shí)現(xiàn)了,即在sql語(yǔ)句后面添加limit分頁(yè)語(yǔ)句。首先還是在StudentMapper接口中添加sql語(yǔ)句查詢的方法,如下:
然后在StudentMapper.xml文件中編寫sql語(yǔ)句通過(guò)limiy關(guān)鍵字進(jìn)行分頁(yè):
接下來(lái)還是在IStuService接口中定義方法,并且在StuServiceIml中對(duì)sql分頁(yè)實(shí)現(xiàn)。sql分頁(yè)語(yǔ)句如下:
所以在service中計(jì)算出currIndex:要開始查詢的第一條記錄的索引。結(jié)果:從輸出結(jié)果可以看出和數(shù)組分頁(yè)的結(jié)果是一致的,因此sql語(yǔ)句的分頁(yè)也是沒(méi)問(wèn)題的。
用SQL語(yǔ)句來(lái)進(jìn)行javaweb分頁(yè)顯示的缺點(diǎn):雖然這里實(shí)現(xiàn)了按需查找,每次檢索得到的是指定的數(shù)據(jù)。但是每次在分頁(yè)的時(shí)候都需要去編寫limit語(yǔ)句,很冗余。而且不方便統(tǒng)一管理,維護(hù)性較差。
這兩種javaweb分頁(yè)顯示實(shí)現(xiàn)方法是需要大家掌握的,但分頁(yè)顯示的方法不止借助數(shù)組和SQL語(yǔ)句,還可以用攔截器實(shí)現(xiàn),大家可以在javaweb教程中學(xué)習(xí)到所有分頁(yè)顯示的方法,并加以練習(xí),相信朋友們都可以掌握javaweb的相關(guān)技能。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743