2015-05-18 24 views

回答

9

這兩種方法的目的是不同的:

從本質上講,當你使用fetchOne()查詢必須返回0或1的紀錄。當您使用fetchAny()時,查詢可能會返回任意數量的記錄,並且如果數據庫返回任何記錄,則將返回從JDBC結果集中獲取的第一個記錄。

+0

通過使用fetchOne(),任何性能優勢?我可以假設它停止查找整個表中的記錄,如果它已經找到了? –

+1

@vinaypatlolla:jOOQ將從JDBC的ResultSet中獲取至多兩條記錄(第一條返回,第二條需要檢查fetchOne()是否需要拋出TooManyRowsException)。但是,您應該確保1)JDBC驅動程序不會緩存太多的行,2)您的數據庫實際上不會加載遊標中的所有行。理想情況下,你也會使用jOOQ的'limit(1)'子句。 –

+0

感謝@Lukas Eder。順便說一下JOOQ是非常棒的:)我從2個月開始一直在使用它,並且幫助了我們很多。 –

2

The javadoc解釋了區別。 fetchAny()返回第一條記錄,而fetchOne()期望查詢返回零個或一條記錄,如果查詢返回多條記錄,則會引發異常。