探索与发现

研究java技术

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  83 随笔 :: 0 文章 :: 109 评论 :: 0 Trackbacks
因为项目当中用到分页,界面用了jstl,本想用jstl给我分页的,测试代码如下

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ page contentType="text/html; charset=gbk"%>
<html>
<body>
 <c:set value="8" var="ipage"/>
 <c:set value="${param.cpage}" var="cpage" scope="request"/>
 <c:if test="${empty sessionScope.allCount}">
 <sql:query var="rso">select * from test</sql:query>
 <c:set value="${rso.rowCount}" var="allCount" scope="session"/>
  </c:if>
 <sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}">
 select * from test
 </sql:query>
 <c:set value="${(allCount+ipage-1)/ipage}" var="allpage"/>
 <fmt:parseNumber value="${allpage}" integerOnly="true" var="allpage"/>
 xxx<c:out value="${allpage}"/><br>
 <c:forEach items="${rs.rows}" var="item">
 <c:out value="${item.name}"/>
 <c:out value="${item.password}"/><br>
 </c:forEach>
   <c:if test="${cpage<=1}">
    <c:set value="${cpage+1}" var="cpage"/>
   </c:if>
   <c:if test="${cpage>allpage}">
    <c:set value="${allpage}" var="cpage"/>
   </c:if>
  <A href="http://localhost:8080/jstl/test.jsp?cpage=${cpage-1}">上一页</A>
  <A href="http://localhost:8080/jstl/test.jsp?cpage=${cpage}">当前页</A>
  <A href="http://localhost:8080/jstl/test.jsp?cpage=${cpage+1}">下一页</A>
 <hr>
</body>
</html>
本以为这样子比起用oracle里的rownum(如果更换数据库还得改代码),来的要好,因为我这里的是
 <sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}">
 select * from test
 </sql:query>
可是我看了他的源代码,竟然它利用缓存,每次调用
<sql:query startRow="" maxRows="">它都会把select * from test的数据全部一次性查出得到一个result,再根据startRow,再调用result.next(),startRow次后才正式帮我们工作..

看来还是原始的方式速度要快一些..
.......进化出来的产物不一定先进
posted on 2006-07-15 10:50 蜘蛛 阅读(3121) 评论(5)  编辑  收藏 所属分类: jsp

评论

# re: jstl分页显示的思考 2006-07-15 15:37 mixlee11
这位兄弟,拜托仔细看看hibernate的代码,不看代码至少也看看打印出来的SQL再下结论  回复  更多评论
  

# re: jstl分页显示的思考 2006-07-15 15:52 龙卷风
"还有hibernate也差不多,也是把数据全查出放在缓存里的"

哥们,不能瞎说啊  回复  更多评论
  

# re: jstl分页显示的思考 2006-07-15 19:15 作者
后面这一句听,听老师说的,
不过真的要看看源码了,呵呵
  回复  更多评论
  

# re: jstl分页显示的思考 2006-07-15 19:32 作者
看了一下,hibernate现在对主流数据库分别对net.sf.hibernate.dialect接口的实现(利用每个数据库分页技术的不同,实现),但是如果对某数据库不支持的话,那么hibernate又回到了像我上面jstl分页那样子了,利用缓存了  回复  更多评论
  

# re: jstl分页显示的思考[未登录] 2007-08-19 17:19 ray
哎....!
老师就是这样被你出卖的.......!
如果把老师教给你的东西吃透了....是不会有这种"思考"的```!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: