JAVA WEB开发分页算法

    分页是所有的项目使用之中最为常见的功能之一,并且分页的目的是为了减少数据的读取数量。大家试想,如果一张表中的数据非常多,这时如果不采用分页而是将所有的数据都加载显示,那么会出现如下两个问题:
   -|加载的数据过多,会造成内存空间的不足;
   -|数据加载的过多,用户的浏览会非常的麻烦,而且用户不一定要查看所有的数据。
  那么正是因为以上的问题,所以在实际的开发之中,强烈要求大家注意一个问题:不要进行数据的全部显示(需要预估数据量)。
  方式一:基于算法的分页。将数据表中的全部数据取出(执行的依然是一个查询全部的处理),将需要显示的部分进行显示输出,而后不需要显示的部分不再输出。这种分页的处理操作,可以在任意的数据库之间进行移植,但是性能不高,因为此时仍需要查询全部的数据,只是不全部显示而已。分析图如下所示:


  方式二:基于数据库的分页。这种分页的形式依靠的是数据库的支持,例如Oralce中依靠ROWNUM进行分页控制,而MySQL依靠limit进行控制。但是这种做法会失去数据库的可移植性,但是性能很高。就目前开发环境而言,大公司主要使用Oracle数据库,中小型公司主要使用MySQL所以方式二已经成为了现在分页操作的主要形式。
如果要想在Oracle数据库中进行分页控制,那么可以使用如下的语法进行:
SELECT * FROM (
SELECT 字段,字段,字段,...,ROWNUM rn
FROM 表名称
WHERE ROWNUM <=  currentPage*lineSize)temp
WHERE temp.rn>(currentPage-1)*lineSize;
其中currentPage表示当前显示的是第几页,lineSize表示每页显示数据行数。
如果要想在MySQL数据库中进行分页控制,那么可以使用如下的语法进行:
SELECT 字段,字段,字段,... FROM 表名称 LIMIT start, lineSize;
其中start表示开始数据行,lineSize表示每页显示的数据行数。
start = (currentPage-1)*lineSize;
currentPage表示当前显示的是第几页。

猜你喜欢

转载自1210344340.iteye.com/blog/2338156