日期:2014-05-17  浏览次数:20778 次

关于分页tag思路
我现在需要做一个分页tag,初步的想法是先写一个BEAN,用于连接数据库返回查询后的ResultSet,之后再把ResultSet对象写进session中,然后再用一个自定义标记直接根据得到的ResultSet对象输出分页的结果,请问这种思路正确吗?有更好的做法吗?谢谢!

------解决方案--------------------
此发不好

第一,数据应该使用reqeust.setAttribute()来传递到jsp
第二,你页面战士10条数据,就只从数据库取10条,不要全部取出来.
第三,数据库资源不可长期占用,推荐的做法是取出数据将它放入ArrayList一类的对象里,然后立即把ResultSet关闭
------解决方案--------------------
探讨

此发不好

第一,数据应该使用reqeust.setAttribute()来传递到jsp
第二,你页面战士10条数据,就只从数据库取10条,不要全部取出来.
第三,数据库资源不可长期占用,推荐的做法是取出数据将它放入ArrayList一类的对象里,然后立即把ResultSet关闭

------解决方案--------------------
探讨
引用:
如果每次不是全部取出,那每次换页的时候是不是还要改变SQL语句?如果只是为了分页显示数据库里的一个表,有必要这样吗?

------解决方案--------------------
你这样也可以实现,但是效率不好,数据还容易过期。最好是一次固定取几条。先设几个变量:总页数maxpage,当前页数index,每页条数size.
sql语句一句话就可以(oracle),因为oracle自动添加一列rownum:
select * from (select rownum as r ,t.* FROM (select * from user order by u_id) t where rownum <=?) where r>?
要是其他数据库也是这意思

------解决方案--------------------
显示几条数据就取几条数据......
------解决方案--------------------
探讨

你这样也可以实现,但是效率不好,数据还容易过期。最好是一次固定取几条。先设几个变量:总页数maxpage,当前页数index,每页条数size.
sql语句一句话就可以(oracle),因为oracle自动添加一列rownum:
select * from (select rownum as r ,t.* FROM (select * from user order by u_id) t w……