【知了堂学习笔记】JSP页面数据分页实现(一)——分页概念以及主流数据库的分页查询

时间:2021-11-16 07:18:36

一.分页简介

  1.分页,就是一种将数据库里的数据一部分展示给用户的技术。为什么要这样做呢?因为一般来说用户在查询时数据是非常多的,当一个页面不能显示所有数据时,我们就要对查询的数据进行分页,就像我们的书本分成一页一页一样。最简单的例子就是百度,当你百度时,成千上万的数据,并不是呈现在一个页面的。

  【知了堂学习笔记】JSP页面数据分页实现(一)——分页概念以及主流数据库的分页查询

  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页面:

  效果图:

【知了堂学习笔记】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页面的分页: