Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jOOQ-fetchAny和fetchOne之间的区别_Java_Sql_Jooq - Fatal编程技术网

Java jOOQ-fetchAny和fetchOne之间的区别

Java jOOQ-fetchAny和fetchOne之间的区别,java,sql,jooq,Java,Sql,Jooq,fetchAny()和fetchOne()之间有(真实的)区别吗?两者都返回精确的一条记录。API文档是相同的,但实现(在github上)是不同的。解释了差异fetchAny()返回第一条记录,而fetchOne()期望查询返回零条或一条记录,如果查询返回多条记录,则抛出异常。这两种方法的目的不同: 返回: 如果查询未返回任何记录,则返回结果记录或null 抛出: -如果查询返回多条记录 返回: 如果查询未返回任何记录,则返回第一个结果记录或null 本质上,当您使用fetchOne

fetchAny()
fetchOne()
之间有(真实的)区别吗?两者都返回精确的一条记录。API文档是相同的,但实现(在github上)是不同的。

解释了差异
fetchAny()
返回第一条记录,而
fetchOne()
期望查询返回零条或一条记录,如果查询返回多条记录,则抛出异常。

这两种方法的目的不同:

  • 返回:

    如果查询未返回任何记录,则返回结果记录或null

    抛出:

    -如果查询返回多条记录

  • 返回:

    如果查询未返回任何记录,则返回第一个结果记录或null

本质上,当您使用
fetchOne()
时,查询必须返回0或1条记录。使用
fetchAny()
时,查询可能返回任意数量的记录,如果数据库返回了任何记录,则将返回从JDBC结果集中获取的第一条记录


请注意,
fetchOne()
因此将尝试从JDBC驱动程序中获取2条记录(以决定是否需要抛出
TooManyRowsException
),而
fetchAny()
最多只能获取1条记录。

使用fetchOne()的任何性能优势?如果已经找到记录,我可以假设它停止在整个表中查找记录吗?@vinaypatlolla:jOOQ将从JDBC
ResultSet
中最多获取两条记录(第一条记录返回,第二条记录需要检查
fetchOne()
是否需要抛出
TooManyRowsException
)。但是,您仍然应该确保1)您的JDBC驱动程序不会缓存太多行,2)您的数据库不会实际加载游标中的所有行。理想情况下,您将使用jOOQ的
limit(1)
子句,也是。谢谢@Lukas Eder。顺便说一句,JOOQ很不错:)我从2个月以来一直在使用它,给了我们很多帮助。我有一个问题@Lukas Eder。JOOQ生成的类都与数据库名同步,现在我想用一个新的模式来处理相同的表,即我将只在这个模式中处理新表,当我现在生成类时,我看到我所有的类都使用了新的schema_名称。那么,在我的类中没有太多更改的情况下,我如何处理多个schema呢?@vinaypatlolla也许这有帮助: