JR 精品文章 - 分页简介
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » Java入门 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
分页简介
giscat 原创   更新:2006-01-05 14:38:07  版本: 1.0   

基本上有两种方法

1.使用可滚动记录集的游标进行分页
2.使用SQL语句,如top,limit等


----------------------

1.select 10000条记录,要取出第11条到20条记录,
  使用可滚动的ResultSet,滚动到第11条,然后依次取出10条就OK了,

  这样分页都在数据库服务器上进行,数据库服务器压力大,耗内存。

(修正这里的错误,分页在客户端进行,在数据量大的时候这样分页是不可取的,建议使用SQL语句分页,多谢各位的指正






  不过该法最简单,实施分页时,只需给定三个参数,sql语句,page和page_size参数

  定义一个可滚动的ResultSet稍微有点麻烦
Connection cn = *******;
   stmt = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                 ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
这样就可以使用
rs.absolute(pos)进行定位了,
其实如果使用forward-only的resultset也可以,只用rs.next()移动记录集就可以了

2.使用SQL语句分页,
以sql-server的top为例

  select top page_size * from t_test where id not in (select top SKIP id from t_test order by id 

desc) 
order by id desc


   int skip = page_size * (page - 1)

用这个方法分页性能可能会好些,不过麻烦


3.如果使用ibatis,hibernate等,分页已经内部实现了,设置一下就可以了,
 其底层的代码没有具体看过,应该使用方法1,绝对不会使用方法2
   (修正这里的错误,ibatis,hibernate等使用的应该是sql语句分页)

现在看自己写的东西,真的很汗,

祝大家新年快乐,万事如意

 期待邓肯再度拿冠,
 期待大罗世界杯更飙


修改日期 20060105









版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     48       8
作者其它文章: 作者全部文章     查看作者的Blog
评论人:wenyuqiu 发表时间: Tue Apr 26 19:54:26 CST 2005
3.如果使用ibatis,hibernate等,分页已经内部实现了,设置一下就可以了,
 其底层的代码没有具体看过,应该使用方法1,绝对不会使用方法2

ibatis我不懂,hibernate却恰好是你所说的第二种?没看过,没用过就不用下这么绝对的定论吧?!
hibernate中通过Query和 Criteria接口
.setFirstResult(20);
.setMaxResults(10);
其背后都是生成你所说的第二种SQL语句,只不过H 做的好,通过方言选择不同的数据库语言而已,如MYSQL 是LIMIT ,SQL SERVER是TOP.

[:E]
评论人:wenyuqiu 发表时间: Tue Apr 26 19:56:03 CST 2005
不过还是感谢你的总结,
以后切莫误导观众![:(]
评论人:giscat 发表时间: Wed Apr 27 14:53:41 CST 2005
多谢指正,
曾经有很多次机会摆在偶的面前,
就是没有去看那,
如果给偶从来一次的机会,
一定得去看,
评论人:bromon 发表时间: Thu Oct 20 11:00:47 CST 2005
简直乱讲,你这样的言论很容易误导别人.没有研究过就不要下结论

而且人家已经给你提出意见,为什么不去修改文章内容?你还要误导多少人?
评论人:giscat 发表时间: Thu Jan 05 14:39:04 CST 2006
汗死人那,我已经改过了
评论人:edison001 发表时间: Wed Nov 22 15:33:28 CST 2006
我也喜欢邓肯跟大罗
评论人:xs57224059 发表时间: Mon Apr 09 19:26:07 CST 2007
dfgfgfgf
评论人:freeren_17 发表时间: Tue Feb 19 09:46:40 CST 2008
好像争论得挺激烈的哦,不过也不错,呵呵!关于分页的一直都是有争论的!
评论人:freeren_17 发表时间: Tue Feb 19 09:48:45 CST 2008
好像争论得挺激烈的哦,不过也不错,呵呵!关于分页的一直都是有争论的!
评论人:bluemaple_00 发表时间: Tue May 13 09:32:49 CST 2008
[good]
对于第一种分页对服务器内存的负担深有体会~~~
大数据量分页千万不要用哦~~

这个文章共有 10 条评论
主题: 在Java中实现增、删、改、查功能? 上一篇文章
返回文章列表 返回〔Java入门〕
下一篇文章 主题: Class对象的作用与产生


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号