 |
| 分页简介 |
|
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
|
|
|
评论人: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.
|
|
|
评论人: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]](/faces/76.gif) 对于第一种分页对服务器内存的负担深有体会~~~ 大数据量分页千万不要用哦~~
|
|
|
|
|
 |