fetchAny()
和fetchOne()
之間是否存在(實)區別?兩者都返回確切的一條記錄API文檔是相同的,但實現(在github上)是不同的。jOOQ - fetchAny和fetchOne之間的區別
7
A
回答
9
這兩種方法的目的是不同的:
-
返回:
產生的記錄,或者如果查詢返回任何記錄爲空。
拋出:
TooManyRowsException
- 如果查詢返回了多個記錄 -
返回:
第一資源ulting記錄,如果查詢不返回任何記錄,則返回null。
從本質上講,當你使用fetchOne()
查詢必須返回0或1的紀錄。當您使用fetchAny()
時,查詢可能會返回任意數量的記錄,並且如果數據庫返回任何記錄,則將返回從JDBC結果集中獲取的第一個記錄。
2
The javadoc解釋了區別。 fetchAny()
返回第一條記錄,而fetchOne()
期望查詢返回零個或一條記錄,如果查詢返回多條記錄,則會引發異常。
相關問題
- 1. 之間的〜/和的區別../
- 2. '#','%'和'$'之間的區別
- 3. {!!之間的區別!!}和{{}}
- 4. '+ ='和'= +'之間的區別?
- 5. 「。+」和「。+?」之間的區別
- 6. .eq之間的區別。和==
- 7. #。/和#之間的區別。 ./
- 8. !=和!之間的區別==
- 9. 「%〜dp0」和「。\」之間的區別?
- 10. | =和^ = css之間的區別
- 11. 之間的區別。和#
- 12. ==和case之間的區別?
- 13. 「**/* /」和「** /」之間的區別?
- 14. jQuery - '。'之間的區別和「#」
- 15. 「?1」和「?」之間的區別
- 16. `%in%`和`==`之間的區別
- 17. fmod和%之間的區別
- 18. 之間的區別:+和:+
- 19. 類區域和堆之間的區別
- 20. SPFile和PublishingPage類別之間的區別
- 21. 子類和類別之間的區別?
- 22. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 23. isForeground()和onExposed和onObscured之間的區別
- 24. $ .ajax()和$ .get()和$ .load()之間的區別
- 25. 和intent和setcontentview之間的區別
- 26. Java和C#和.NET之間的區別
- 27. NSthread和NStimer和NSNotifcation之間的區別?
- 28. sys.log()和console.log()和console.error()之間的區別?
- 29. 關注與責任之間的區別(即SRP和SoC之間的區別)?
- 30. make中的「$(shell ...)」和「$$(...)」之間的區別
通過使用fetchOne(),任何性能優勢?我可以假設它停止查找整個表中的記錄,如果它已經找到了? –
@vinaypatlolla:jOOQ將從JDBC的ResultSet中獲取至多兩條記錄(第一條返回,第二條需要檢查fetchOne()是否需要拋出TooManyRowsException)。但是,您應該確保1)JDBC驅動程序不會緩存太多的行,2)您的數據庫實際上不會加載遊標中的所有行。理想情況下,你也會使用jOOQ的'limit(1)'子句。 –
感謝@Lukas Eder。順便說一下JOOQ是非常棒的:)我從2個月開始一直在使用它,並且幫助了我們很多。 –