分页显示在开发中是很常用的,而且也有很多种分页方式。分页过程中一般都是需要查询信息列表以及中的记录数,其中总记录数用来判断一共有多少页,这就需要两次查询(其实,如果查询条件不变的话,能不能变成一次查询?),大家都是如何处理这个问题呢,如何尽可能的提高效率呢?
解决方案 »
- java报表的问题
- java面试题
- 比较下非jsp视图struts技术的优缺点,freemarker最常用?
- sql问题
- 在自己的机子上可以解析word ,但同样的程序搬到别的机子上就运行不了了
- 请问:Jboss4.0.3sp1作为web容器的问题。高手请进,高分回报
- struts不同的formbean能否用一个action处理
- 如何在TOMCAT 4.1中使用第三方开发包
- 请教:关于transaction
- tomcat 启动一直报错
- javax.mail.AuthenticationFailedException: EOF on socket
- 大家给我推荐一本比较好的struts2+spring+hibernate的书籍啊,要有实例
如果用hibernate,它自己会根据不同的dialect来翻译成数据库的SQL子集语句。
query.setFirstResult(n);
query.setMaxResults(m);
List l = query.list();
我用的别人写的jar包
自己只需要写个查找总条数的方法没写过分页了
反正查询一次即可。
再者如果当前查询的数据量不是很多,2k条内,可以考虑一次查询完,把数据(做成xml)都放到客户端,翻页的操作时,直接用js去客户端的数据。
select top a * from tabl_name where id not in(select top (b-1)*a id from tabl_name)
这样就可以了
又要求效率和兼容性可以后台可以采用Hibernate(其他没有过)。前台使用displaytag就OK了
在后台查询两次(一次差记录数,一次查记录集)
将查询记录个数相关放在一个分页类
将记录集放在List里
然后分页类和查询的记录集放在一个map里边返回给前台
一次返回
前台怎么解析?
交给JSTL好了
很强大的
O(∩_∩)O~
1 假分页(低效)
一次性从数据库读取表中的所有记录数,然后页面通过取rs结果集的记录数 再进行分页显示2 真分页(高效)利用SQL在数据库端,就进行好分页。例如:oracle SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21使用rownum
进行分页mysql 有limitdb2 有rownumber()等等
这个计算就跟数据库没啥关系了。
计算完后去数据库查询,不同的数据库有不同的算法,如oracle-rownum,sqlserver-top,mysql-limit,所谓的效率,也就只能在这一步上面下功夫了,这要根据你用什么数据库来定,不可一概而论。
如果用hibernate,它自己会根据不同的dialect来翻译成数据库的SQL子集语句。
query.setFirstResult(n);
query.setMaxResults(m);
List l = query.list();