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