此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【hhtt_32】截止到2008-07-02 10:14:44的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
楼主【hhtt_32】截止到2008-07-02 10:14:44的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
具体的分页技术要看你用什么数据库,还有你用什么方式连接数据库,jdbc还是hibernater
hibernater有自带的分页查询,jdbc可以自己写一个分页。
普通的查询 就在数据库中查询 并分好页来
具体实现要看你用什么技术
hibernate比较简单可以用他的session.createQuery(hql).setFirstResult(...).setMaxResult(...).list();
其他可能要自己写分页功能了
SELECT * FROM G_ADMIN OPEN authors_cursor FETCH NEXT
FROM authors_cursor还是别用存储过程了,呵呵
其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页数据(使用rs.last();rs.getRow()获得总计录条数,使用rs.absolute()定位到本页起始记录)。这种方式在某些数据库(如oracle)的JDBC实现中差不多也是需要遍历所有记录,实验证明在记录数很大时速度非常慢。
至于缓存结果集ResultSet的方法则完全是一种错误的做法。因为ResultSet在Statement或Connection关闭时也会被关闭,如果要使ResultSet有效势必长时间占用数据库连接。
因此比较好的分页做法应该是每次翻页的时候只从数据库里检索页面大小的块区的数据。这样虽然每次翻页都需要查询数据库,但查询出的记录数很少,网络传输数据量不大,如果使用连接池更可以略过最耗时的建立数据库连接过程。而在数据库端有各种成熟的优化技术用于提高查询速度,比在应用服务器层做缓存有效多了。
这个比较好理解从数据库表中第M条记录开始检索N条记录 SELECT *
FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2
where t2.r >= M
具体实现要看你用什么技术
hibernate比较简单可以用他的session.createQuery(hql).setFirstResult(...).setMaxResult(...).list();