`
100Air
  • 浏览: 118826 次
  • 性别: Icon_minigender_1
  • 来自: 海南
社区版块
存档分类
最新评论
阅读更多
1. 使用forward-only的resultset,rs.next()移动记录集就可以了

  选从50-100行

  int CurrentRow = 1;

  int MinRow = 50;

  int MaxRow = 100;

  while(rs.next())

  {

  if (CurrentRow

  {

  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语句-通用

       sql20000语句:

  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条记录

       mysql:

       select * from table  limit startRow,endRow

  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();

 

分享到:
评论
1 楼 bsspirit 2008-09-08  
你写的分页策略,只是API的策略。

不是物理分页策略啊。

相关推荐

    java实现oracle分页策略

    Oracle作为一款广泛应用的关系型数据库,其高效的分页策略对于优化用户体验和减轻服务器压力具有显著效果。本文将深入探讨如何使用Java来实现Oracle的分页策略。 首先,我们需要了解分页的基本概念。分页是将大数据...

    基于ASP.NET缓存与分页策略优化Web数据查询性能

    本文将深入探讨如何利用ASP.NET的缓存机制和分页策略,结合高效的存储过程来提升性能。以下是对这些技术的详细解释: **ASP.NET缓存**: ASP.NET缓存是.NET Framework提供的一个强大工具,它允许开发者存储常用或...

    Linux操作系统中的分页策略介绍

    在Linux操作系统中,分页策略是内存管理的关键组成部分,它确保了进程间的隔离性和安全性。分页机制使得每个进程都拥有自己独立的虚拟地址空间,这些空间通过页表进行映射,以确保不同进程的虚拟地址不会映射到相同...

    JAVA分页完美解决方案修订版

    JAVA分页是个经典问题,本人从网上搜集资料,并通过编程,较为完美地决地了这个问题,浏览、增加、删除、修改、查看、搜索都可以回到原来的页码,源码已经上传CSDN,值得下载! 我的方案是用两个TAG完成分页显示数据...

    mysql数据库实现分页

    在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而...同时,随着版本升级,MySQL提供了更多分页策略和技术,如窗口函数,以满足不同的应用场景。

    jsf分页 jsf分页 jsf分页

    在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致...在实际开发中,应根据项目需求和性能要求选择最适合的分页策略。

    电子书TXT分页

    总的来说,电子书TXT分页是提升数字阅读体验的重要环节,无论是手动还是自动,都需要根据实际需求和用户习惯来设计合理的分页策略。对于开发者来说,理解并掌握分页原理和实现方法,能更好地满足用户在移动设备上的...

    分页文档以及分页步骤

    在IT行业中,分页是一种非常常见的数据展示技术,特别是在网页应用和数据库操作中。...同时,随着技术的发展,我们还需要关注新的分页解决方案,如React、Vue等前端框架的分页组件,以及云原生环境下的分页策略。

    nodejs mysql 实现分页的方法

    因此,在实际应用中需要根据具体数据量和应用场景来选择合理的分页策略。 最后,代码中还展示了如何使用`module.exports`导出Router,这样在其他文件中就可以通过`require`来引入并使用该分页功能了。这也是Node.js...

    AspNetPager分页控件--真假分页实例

    通过实践,开发者可以更好地掌握如何根据项目需求选择合适的分页策略,以及如何有效利用`AspNetPager`控件来优化数据展示性能。在实际开发中,还需要考虑其他因素,如数据库性能优化、用户体验设计等,以确保分页...

    新浪分页技术,挺不错的分页技术思路

    新浪分页技术是网页开发中常见的一种数据展示方式,它能有效地管理大量数据,提高用户体验。在处理如新闻、论坛帖子等...在实际应用中,开发者可以根据项目需求,结合前端框架和后端服务,灵活地实施和优化分页策略。

    分页组件+反射分页组件+反射分页组件+反射

    例如,如果我们要根据不同的数据源或查询条件动态调整分页策略,可以通过反射获取数据源类的实例,然后调用其特定的查询方法,从而实现高度自定义的分页逻辑。 结合分页组件和反射,我们可以创建一个企业级的分页...

    list 假分页的demo

    在IT行业中,分页是一种常见的数据展示方式,特别是在网页或应用程序中处理大量数据时。"假分页"(也称为虚拟分页)是一种优化策略,它并不真正地从数据库...在实际应用中,应根据数据量和性能需求选择合适的分页策略。

    大数量分页

    本文将详细探讨两种分页策略——默认分页和自定义分页,并侧重于后者在大数据量场景下的应用,特别是如何利用SQL Server 2005的新特性来实现高效的数据检索。 #### 默认分页的局限性 默认分页策略因其简单易用而广...

    j2ee分页(假分页)

    总结来说,"j2ee分页(假分页)"主要是在Struts框架下,通过MVC模式实现的一种简化版分页策略,适用于数据量不大的场景。它依赖于内存中的全部数据进行逻辑分页,而并非直接从数据库进行物理分页,因此在处理大量...

    基于springmvc实现分页查询

    在Java Web开发中,Spring MVC框架是一个非常流行的MVC(模型-视图-控制器)架构模式的实现,它为开发者...同时,随着Spring Data的不断发展,新的分页策略和库也不断涌现,开发者应根据项目需求选择最合适的解决方案。

    jsp仿百度、谷歌分页解决分页太多,始终显示一部分的页码

    总之,通过模仿百度和谷歌的分页策略,我们可以创建一个高效且用户友好的分页系统。这个系统不仅能够处理大量数据,还能为用户提供直观的导航体验。在实际开发中,务必保持代码的清晰和简洁,以便于维护和扩展。同时...

    JSP实现真分页和假分页

    在Web开发中,数据分页是一项常见的功能,用于在大量数据中进行有效的浏览。JSP(JavaServer Pages)是...开发者应根据实际需求选择合适的分页策略。在JSP中实现这两种分页都需要对SQL、Java以及前端技术有一定的掌握。

    JDBC分页 物理分页 mysql实现

    对于大型数据集,可以考虑使用更高效的分页策略,如`ROW_NUMBER()`窗口函数(MySQL 8.0及以上版本支持)。 在实际项目中,除了基本的分页查询,还需要考虑一些额外的问题,比如总页数的计算、页码回溯和前瞻、分页...

Global site tag (gtag.js) - Google Analytics