Przy użyciu JDBC i uzyskiwania dostępu do prymitywnych typów poprzez zestaw wyników, tam jest bardziej eleganckim sposobem radzenia sobie z zerową/0 niż:Podczas uzyskiwania dostępu do ResultSets w JDBC, istnieje elegancki sposób na odróżnienie wartości zerowych od rzeczywistych wartości zerowych?
int myInt = rs.getInt(columnNumber)
if(rs.wasNull())?
{
// Treat as null
} else
{
// Treat as 0
}
Osobiście warować kiedy widzę ten rodzaj kodu. Nie widzę powodu, dla którego ResultSet nie został zdefiniowany w celu zwrócenia pudełkowych typów całkowitych (z wyjątkiem, być może, wydajności) lub przynajmniej zapewnienia obu. Punkty premiowe, jeśli ktokolwiek może mnie przekonać, że aktualny projekt interfejsu API jest świetny :)
Moim osobistym rozwiązaniem było napisanie opakowania, które zwraca liczbę całkowitą (bardziej zależy mi na elegancji kodu klienta niż wydajności), ale zastanawiam się jeśli brakuje mi lepszego sposobu na zrobienie tego.
Dla wyjaśnienia, to, co przeszkadza mi w tym kodzie, nie jest długością, ale fakt, że tworzy zależność od stanu między kolejnymi wywołaniami, i to, co wygląda jak zwykły getter, faktycznie ma efekt uboczny w tym samym wierszu.
Najwyraźniej osoby odpowiedzialne za zamianę> b na a.compare (b)> 0 nie mogły wyobrazić sobie świata, w którym nie chciałbyś używać getBigDecimal w miejsce jakiejkolwiek innej opcji! – Affe
Nie odpowiedź, ale podpowiedź. Ten "dylemat" jest obsługiwany na stronie http://www.jooq.org, gdzie wszystkie typy liczbowe są traktowane jako obiekt, a ten "fakt" JDBC jest wyabstrahowany ... Więc z jOOQ, nie ma potrzeby pisania własnego opakowania dla Niedociągnięcia JDBC –