gpt4 book ai didi

jooq - fetchNext(int) 方法在 jooq 中如何工作?

转载 作者:行者123 更新时间:2023-12-02 02:43:15 25 4
gpt4 key购买 nike

来自 fetchNext(int number) 的文档 -“在获取最后一条记录后,这将方便地关闭游标。”

假设number=100,一共有1000条记录。它会在获取第 100 条记录后关闭游标,还是在获取第 1000 条记录时关闭游标?换句话说,文档中提到的“最后一条记录”是什么?

Cursor<Record> records = dsl.select...fetchLazy();

while (records.hasNext()) {
records.fetchNext(100).formatCSV(out);
}
out.close();

最佳答案

这种便利是 jOOQ 中的一个历史特性,最终将被删除:https://github.com/jOOQ/jOOQ/issues/8884 .与 Java 中的每个 Closeable 资源一样,您应该永远依赖这种自动关闭。当您知道已经用完资源时,最好及时关闭资源。在您的情况下,理想情况下,将代码包装在 try-with-resources 语句中。

Javadoc 的意思是,一旦 jOOQ 对 ResultSet.next() 的调用产生 false,底层 JDBC ResultSet 就会关闭,即数据库不再返回记录。所以不行。如果您的选择总共有 1000 条记录,而您只提取 100 条,则游标将不会关闭。如果是这样,这将不是一个“方便的功能”,但会破坏各种其他 API,包括您调用的 API。完全有可能调用 fetchNext(100) 两次,或者像您一样在循环中调用。

关于jooq - fetchNext(int) 方法在 jooq 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57854106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com