gpt4 book ai didi

java - jSTL的sql标签是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:04:55 28 4
gpt4 key购买 nike

我正在使用以下代码从我的 jsp 查询数据库,但我想了解更多关于幕后发生的事情。

这是我的两个主要问题。

标签是直接访问ResultSet,还是将查询结果存储在内存中的数据结构中?

什么时候关闭连接?

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<sql:query var="query" dataSource="${ds}" sql="${listQuery}"></sql:query>
<c:forEach var="row" items="${query.rows}" begin="0">
${row.data }
${row.more_data }
</c:forEach>

注意:我一直反对在 jsp 中运行查询,但我的结果集太大而无法在我的操作和我的 jsp 之间存储在内存中。使用这个标签库看起来是最简单的解决方案。

最佳答案

基于 org.apache.taglibs.standard.tag.common.sql.QueryTagSupport 来源的观察

taglib 遍历 ResultSet 并将所有数据放入数组、Map 和 List 中。因此,在您开始循环之前,一切都已加载到内存中。

当遇到查询开始标签时打开连接(doStartTag 方法)。当遇到查询结束标记时检索结果(doEndTag 方法)。连接在 doFinally 方法中关闭。

简而言之,这绝对是糟糕的。

关于java - jSTL的sql标签是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/95134/

28 4 0