javaweb实现分页查询(一)
大家好,歡迎來到雄雄的小課堂,昨天分享了個(gè)分頁(yè)工具類,其實(shí),也是為今天的分享做的鋪墊,今天,給大家?guī)淼氖莏avaweb實(shí)現(xiàn)分頁(yè)的全過程!
前言:為什么需要分頁(yè)?假設(shè)某大學(xué)有人數(shù)一萬人,學(xué)生信息管理系統(tǒng)需要查詢所有大學(xué)生的信息,那么就會(huì)將1w個(gè)學(xué)生的信息都查詢的顯示在頁(yè)面中,管理員每次都需要不斷的往下拖動(dòng)頁(yè)面才能瀏覽完所有學(xué)生信息,并且還容易看錯(cuò)行。有沒有一種方法,既可以顯示多條信息,又不用你拖動(dòng)頁(yè)面呢?答案當(dāng)然是有的,那就是我們今天所有看的分頁(yè)!
實(shí)現(xiàn)分頁(yè)的方式
其實(shí),實(shí)現(xiàn)分頁(yè)的方式有好多種,一種是直接將需要查詢的數(shù)據(jù)一次性查詢出來,放在一個(gè)集合中,每次在集合中遍歷出需要展示的數(shù)據(jù)即可。但是,這種方法是有缺點(diǎn)的,第一,看到的數(shù)據(jù)可能不是最新的,比如實(shí)時(shí)更新的數(shù)據(jù)(股票、外匯數(shù)據(jù))肯定不能用這種方式。其次,如果數(shù)據(jù)庫(kù)中有幾萬條數(shù)據(jù)的話,這么一次都查詢出來往集合中扔,效率是非常低下的,耗時(shí)也很多。
第二種實(shí)現(xiàn)分頁(yè)的方式就是,我們可以從數(shù)據(jù)庫(kù)中查詢我們每頁(yè)所需要的數(shù)據(jù),比如每頁(yè)顯示5條,那你就在數(shù)據(jù)庫(kù)中查詢5條,實(shí)時(shí)從數(shù)據(jù)庫(kù)中查詢,以來避免了數(shù)據(jù)庫(kù)過大性能的問題,二來,由于每次都是從數(shù)據(jù)庫(kù)中實(shí)時(shí)查詢的,所以也就不會(huì)存在數(shù)據(jù)過期問題了。
今天,我們就用第二種方式來實(shí)現(xiàn)分頁(yè)。
實(shí)現(xiàn)分頁(yè)的步驟
1. 確定頁(yè)大小(每頁(yè)顯示的數(shù)據(jù)量)
這個(gè)其實(shí)很好理解,每頁(yè)顯示5條,就設(shè)置5條即可,每頁(yè)顯示10條,就設(shè)置10條,當(dāng)然,這個(gè)每頁(yè)顯示的數(shù)據(jù)量也可以交給用戶決定。
2. 計(jì)算顯示的總頁(yè)數(shù)
有了每頁(yè)顯示的條數(shù),在給你所有條數(shù),你會(huì)不會(huì)算一共有多少頁(yè)?就像一共有21個(gè)雞蛋(總記錄數(shù))需要給籃子里面裝,每個(gè)籃子最多只能放5(每頁(yè)顯示的數(shù)據(jù)量)個(gè),那么你需要多少個(gè)籃子才能把21個(gè)雞蛋都放完?怎么算?
21/5=4余1,余下來的這一個(gè)怎么辦?當(dāng)然是在找個(gè)籃子放進(jìn)去,這樣的話,我們就需要4+1個(gè)籃子。
數(shù)據(jù)也是這樣的,如果有19條數(shù)據(jù),每頁(yè)顯示5條,需要多少頁(yè)?
19/5=3余4,那最后總頁(yè)數(shù)就是3+1,4頁(yè)!
思維轉(zhuǎn)換到j(luò)ava中,代碼如下:
總頁(yè)數(shù) = 總記錄數(shù)%頁(yè)大小==0?總記錄數(shù)/頁(yè)大小: 總記錄數(shù)/頁(yè)大小+1;
那有同學(xué)會(huì)問,老師,總記錄數(shù)咋來的,你也沒告訴我啊?總記錄數(shù)我們只需要一條sql語句就搞定了,如下:
Selct count(*) from student;
3. 寫分頁(yè)的sql語句
目前我們就以mysql為例,mysql中分頁(yè)的語法如下:
Select * from student limit 0,5;
其中student為數(shù)據(jù)表0為偏移量,動(dòng)態(tài)的,5為頁(yè)大小,固定的。
假使我們?nèi)〉谝豁?yè)數(shù)據(jù),不需要便宜,那偏移量就是0,如果我們?nèi)〉诙?yè)的數(shù)據(jù),需要從第六條開始顯示,需要越過第一頁(yè)的1-5條數(shù)據(jù),偏移量得從6開始,可以總結(jié)出一個(gè)規(guī)律,那就是:
偏移量=(當(dāng)前頁(yè)-1)*頁(yè)大小
例如,第三頁(yè)的偏移量,即:(3-1)*5=10;
今天我們就先看這些,明天將今天的理論知識(shí)運(yùn)用到j(luò)avaweb的代碼中做一個(gè)具體的案例。
歡迎關(guān)注公眾號(hào)雄雄的小課堂
總結(jié)
以上是生活随笔為你收集整理的javaweb实现分页查询(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaweb中实现分页,持续更新……
- 下一篇: java中部的分页实现(二)