當使用JDBC,並通過結果集訪問原始類型,是否有一個更優雅的方式來處理與空/ 0比下面在JDBC中訪問ResultSet時,有沒有一種方法可以區分零值和實際零值?
int myInt = rs.getInt(columnNumber)
if(rs.wasNull())?
{
// Treat as null
} else
{
// Treat as 0
}
我個人畏縮,每當我看到這種代碼。我不明白爲什麼ResultSet沒有被定義爲返回盒裝整數類型(可能除外,性能)或至少提供這兩種類型。獎金積分,如果任何人都可以說服我,目前的API設計是偉大的:)
我個人的解決方案是編寫一個封裝,返回一個Integer(我更關心優雅的客戶端代碼比性能),但我想知道如果我錯過了一個更好的方法來做到這一點。
只是爲了澄清一下,關於此代碼的困擾不是長度,而是它在隨後的調用之間創建了狀態依賴關係,並且看起來像是一個簡單的getter實際上在同一行內有副作用。
很明顯,負責用a.compare(b)> 0替換a> b的人無法想象一個你不想用getBigDecimal代替任何其他選項的世界! – Affe 2010-05-05 22:49:59
不是一個答案,而是一個提示。這個「困境」在http://www.jooq.org中處理,所有的數字類型都被當作對象來處理,並且這個JDBC「事實」被抽象化了......因此,使用jOOQ,不需要編寫自己的包裝器JDBC的缺點 – 2011-07-11 06:01:04