【知了堂學習筆記】JSP頁面數據分頁實現(一)——分頁概念以及主流數據庫的分頁查詢


一.分頁簡介

  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>&nbsp;&nbsp;&nbsp;到第</p>
                <input  type="text" name="">
                <p style="margin:2px -1px 0 10px;"></p>
                <input class="button" type="submit" value="確認">
            </div>
        

下章我們就實現JSP頁面的分頁:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM