Posted on 2006-07-26 17:17
HandSoft 閱讀(918)
評(píng)論(0) 編輯 收藏
因?yàn)轫?xiàng)目當(dāng)中用到分頁,界面用了jstl,本想用jstl給我分頁的,測(cè)試代碼如下
<%@ 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
}">當(dāng)前頁</A>
? <A href="
http://localhost:8080/jstl/test.jsp?cpage=${cpage+1
}">下一頁</A>
?<hr>
</body>
</html>
本以為這樣子比起用oracle里的rownum(如果更換數(shù)據(jù)庫還得改代碼),來的要好,因?yàn)槲疫@里的是
?<sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}">
?select * from test
?</sql:query>
可是我看了他的源代碼,竟然它利用緩存,每次調(diào)用
<sql:query startRow="" maxRows="">它都會(huì)把select * from test的數(shù)據(jù)全部一次性查出得到一個(gè)result,再根據(jù)startRow,再調(diào)用result.next(),startRow次后才正式幫我們工作..
還有hibernate也差不多,也是把數(shù)據(jù)全查出放在緩存里的,,
看來還是原始的方式速度要快一些..
.......進(jìn)化出來的產(chǎn)物不一定先進(jìn)