一.分頁簡介
1.分頁,就是一種將數據庫里的數據一部分展示給用戶的技術。為什么要這樣做呢?因為一般來說用戶在查詢時數據是非常多的,當一個頁面不能顯示所有數據時,我們就要對查詢的數據進行分頁,就像我們的書本分成一頁一頁一樣。最簡單的例子就是百度,當你百度時,成千上萬的數據,並不是呈現在一個頁面的。

2.分頁的實現方式
1)假分頁(不推薦):什么是假分頁呢?假分頁就是一次性將數據庫里的數據全部取出來,存儲在頁面中,然后再將數據分別展示出來。這種假分頁在數據少的還可以玩玩,當數據多起來的時候,這種方式就爆炸了。由於一次取出的數據太大,會導致你的頁面爆炸,點下一頁要等很久,用戶體驗感很差,所以不推薦使用。
2)真正的分頁:真正的分頁就是你的頁面需要多少數據,就去數據庫取多少數據。這種分頁就十分靈活了,在對付數據龐大的查詢時,有很大的優勢。所以我們這次的筆記就使用這樣的方式。
二.數據庫分頁查詢
數據庫分頁查詢,就是根據頁面的需要,一次只查詢部分的數據,當用戶點擊下一頁的時候就繼續查詢另外的數據。現在主流的數據庫主要有三種:Oracle、MySQL、SQL server,我們接下來就看看,三種數據庫對應分頁查詢的方法。
1.MySQL——相對來說最簡單分頁查詢
MySQL的分頁查詢要用到 limit關鍵字,方式就是 limit m,n m表示第幾條數據 n表示從m+1開始取多少條數據,比如
select * from table limit m,n 其中m是指記錄開始的index,從0開始,表示第一條記錄
具體:select * from tableName where 條件 limit 當前頁碼*頁面容量-1,頁面容量
2.Oracle 分頁
Oracle分頁要用到的關鍵字是 rownum (行號),我們直接看它的用法
1)查詢表中的前n條記錄 : select * from Table where rownum <= n
2)查詢第 n 到第 m 條記錄 :select * from (select 表名.*, rownum rn from 表名 where rownum <=m) where rn > n;
對於這種形式的查詢,oracle不像mysql那么方便,它必須使用子查詢或者是集合操作來實現。
3.SQL server的分頁
在分頁查詢上,我感覺SQL Server比較費勁,沒有一個專門的分頁的語句,並且每個版本對應的查詢方式不一樣,比如:
1)SQL Server 2000數據庫分頁
Select top pagesize * from 表名 where 列名 not in(select top pagesize*page 列名 from 表名 order by 列名) order by 列名
2)SQL Server 2005數據庫分頁(后面的數據分頁就大同小異了)
Select * from (select 列名,row_搜索number() over(order by 列名1) as 別名from 表名) as t where t.列名1>=startrow and t.列名1<=endrow
三.頁面的編寫
數據的分頁查詢學會了,我們就要規划頁面如何在頁面顯示了。一般的網頁中,我們都是以表格的樣式呈現數據的,所以我們先把jsp頁面做好,再去通過編寫后台代碼讓數據呈現在頁面上,這里我給出了我們測試的jsp頁面:
效果圖:

附上代碼:
<div class="search"> <p>申請日期:</p> <select id="time"> <option >選擇日期</option> </select> <input class="button" type="submit" name="" value="查詢"></input> <div class="tuxin"><img src="../../images/圖形化報表.png"> <a href="#">圖形報表</a></div> <div class="dayin"><img src="../../images/打印機.png"> <a href="#">導出打印</a></div> <form> <p>采購編號:</p> <input type="text" name=""> <p>材料名稱:</p> <input type="text" name=""> <input class="button" type="submit" name="" value="查詢"></input> <input type="reset" class="button" value="重置" style="background:#e4e1e1;color:#000"></input> </form> </div> <div class="contents"> <table class="table"> <tr> <td>申請日期</td> <td>申請人</td> <td>采購員</td> <td>材料編號</td> <td>材料名稱</td> <td>規格型號</td> <td>計量單位</td> <td>申請數量</td> <td>備注</td> <td>操作</td> </tr> <tr> <td>2017/8/7</td> <td>小賢</td> <td>張三</td> <td>1001</td> <td>玻璃</td> <td>100X100X3</td> <td>cm(厘米)</td> <td>1000</td> <td>無</td> <td><a class="delete" href="#"><img src="../../images/delete_8e.png"></a></td> </tr> </table> <div class="paging"> <a class="button" href="">上一頁</a> <a href="#">1</a> <a href="#">2</a> <a href="#">3</a> <a href="#">4</a> <a href="#">5</a> <a class="button" href="">下一頁</a> <p>共<span>5</span>頁 到第</p> <input type="text" name=""> <p style="margin:2px -1px 0 10px;">頁</p> <input class="button" type="submit" value="確認"> </div>
下章我們就實現JSP頁面的分頁:
