一.分页简介
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页面:
效果图:
附上代码:
申请日期:
选择日期
图形报表