`

记录集分页显示策略五种实现方法

 
阅读更多

记录集分页显示策略五种实现方法 int CurrentRow = 1; int MinRow = 50; int MaxRow = 100; while(rs.next()) { if (CurrentRow<MinRow) { CurrentRow++; continue; } }

  2.使用可滚动记录集的游标进行分页,用abslout(int row)定位

Connection cn = 。。。; stmt = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); 这样就可以使用rs.absolute(pos)进行定位了

  3.使用SQL语句-通用

select top 50 *

from (select top 100 * from tablex order by id desc) as a

order by id

Oracle的语句: select * from (select rownum r ,* from test) tt where tt.r > 50 and tt.r <= 100; DB2中: select * from payment fetch first 5 row only --查前5条记录

  4.使用ibatis,hibernate等,分页已经内部实现了,设置一下就可以了

1)hibernate

Query q = session.createQuery("from Cat as c");   q.setFirstResult(50);   q.setMaxResults(100);   List l = q.list();

  那么Hibernate底层如何实现分页的呢?实际上Hibernate的查询定义在net.sf.hibernate.loader.Loader这个类里面,仔细阅读该类代码,就可以把问题彻底搞清楚。

  Hibernate2.0.3的Loader源代码第480行以下:

  if (useLimit) sql = dialect.getLimitString(sql);   PreparedStatement st = session.getBatcher().prepareQueryStatement(sql, scrollable);

  如果相应的数据库定义了限定查询记录的sql语句,那么直接使用特定数据库的sql语句。

  然后来看net.sf.hibernate.dialect.MySQLDialect:

  public boolean supportsLimit() {   return true;   }   public String getLimitString(String sql) {   StringBuffer pagingSelect = new StringBuffer(100);   pagingSelect.append(sql);   pagingSelect.append(" limit ?, ?");   return pagingSelect.toString();   }

  这是MySQL的专用分页语句,再来看net.sf.hibernate.dialect.Oracle9Dialect:

  public boolean supportsLimit() {   return true;   }

  public String getLimitString(String sql) {   StringBuffer pagingSelect = new StringBuffer(100);   pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");   pagingSelect.append(sql);   pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");   return pagingSelect.toString();   }

  Oracle采用嵌套3层的查询语句结合rownum来实现分页,这在Oracle上是最快的方式,如果只是一层或者两层的查询语句的rownum不能支持order by。

2)ibatis

PaginatedList list =sqlMap.queryForPaginatedList ("getProductList”, null, 10); list.nextPage(); list.previousPage();

  5.使用The Pager Tag Library

http://jsptags.com/tags/navigation/pager/下载pager-taglib-2.0.war包,解压后可获得pager-taglib.jar,将其放到web-inf/lib/包下

分享到:
评论

相关推荐

    Android知识点及重要代码合集 word文档

    9.1 数据分页策略及算法 106 9.2 分页加载代码 106 9.3解决图文混排的问题(方法1) 109 9.4 进度对话框提示加载和页脚提示加载 118 10.1 实现分页及解决图文混排的问题 119 10.2 GridView常用属性(使用参考...

    asp.net专家疑难解答200问源码

    47.如何实现当鼠标移到控件时显示提示信息 48.如何在Web应用程序中实现快捷键功能(使用脚本实现) 48.如何在Web应用程序中实现快捷键功能(使用属性实现) 49.如何设置页面上控件的Tab键顺序 50.如何实现用回车键...

    Grid++Report 5.0 测试版,欢迎下载试用并报告问题

    记录集字段排序可以指定升序或降序,多个字段排序时,不同字段可以分别指定升降序类别。 图表增加曲线图与气泡图 ,并增加显示坐标线功能。 交叉表可以进行自定义汇总统计,不仅仅只是进行简单的汇总求和,可以...

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 实例080 公告标题的截取 114 实例081 论坛内容的简短输出 116 实例082 自定义函数...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 实例080 公告标题的截取 114 实例081 论坛内容的简短输出 116 实例082 自定义函数...

    asp.net专家疑难解答200问

    如何备份和恢复数据库 第9章 ASP.NET安全策略 第10章 常用功能及函数集 180.如何在ASP.NET中获得客户端IP地址 181.如何取得一定范围内的随机数 182.如何取得文件的扩展名示例一 182.如何...

    JSP 程序设计从入门到精通 PDF 教程

     7.4 Jsp数据分页显示 184  7.5 jsp编写的留言本 188  7.5.1在mysql中建表 188  7.5.2编写的留言本 189  7.6 本章小结 200  第3篇 案例精讲 200  第8章 学生课绩管理系统 200  8.1系统概述 200  ...

    php网络开发完全手册

    15.3.7 结果集的分页 248 15.3.8 用户动态添加记录 249 15.3.9 用户动态更新记录 251 15.3.10 用户动态删除记录 253 15.4 使用PHP获取MySQL数据库的信息 255 15.4.1 获取数据库的信息 255 15.4.2 获取表的信息 256 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例133 使用方法实现线程同步 172 实例134 使用代码块实现线程同步 174 实例135 使用特殊域变量实现线程同步 175 实例136 使用重入锁实现线程同步 176 实例137 使用线程局部变量实现线程同步 177 实例138 简单的...

    windowsnt 技术内幕

    用Winn32.exe执行Windows NT升级 使用联机丛书 系统策略编辑器简介 理解系统策略编辑器模式 理解系统策略处理 在域控制器上实现系统策略 在非域控制器上实现系统策略 使用系统策略编辑器复选框 从登录对话框中删除...

    ASP.net技术内幕

    11.3.1 在DataGrid控件中创建列 11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑...

    asp.net技术内幕(1)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

    asp.net技术内幕(2)

    11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑DataGrid控件中的条目 11.3.7 使用模板...

Global site tag (gtag.js) - Google Analytics