Quando si utilizza JDBC e accedere ad alcuni tipi primitivi tramite un set di risultati, c'è un modo più elegante per affrontare il nulla/0 al massimo i seguenti:Quando si accede a ResultSet in JDBC, esiste un modo elegante per distinguere tra valori nulli e valori zero effettivi?
int myInt = rs.getInt(columnNumber)
if(rs.wasNull())?
{
// Treat as null
} else
{
// Treat as 0
}
io personalmente rabbrividire ogni volta che vedo questo tipo di codice. Non riesco a capire perché ResultSet non sia stato definito per restituire i tipi interi in scatola (tranne, forse, le prestazioni) o almeno fornire entrambi. Punti bonus se qualcuno può convincermi che l'attuale design dell'API è fantastico :)
La mia soluzione personale era scrivere un wrapper che restituisce un intero (mi interessa più dell'eleganza del codice client che delle prestazioni), ma mi chiedo se mi manca un modo migliore per farlo.
Giusto per chiarire, ciò che mi infastidisce di questo codice non è la lunghezza, ma il fatto che a crea una dipendenza di stato tra le chiamate successive, e ciò che appare come un semplice getter ha effettivamente un effetto collaterale all'interno della stessa riga.
Chiaramente le persone responsabili della sostituzione di a> b con a.compare (b)> 0 non potevano immaginare un mondo in cui non si desidera utilizzare getBigDecimal al posto di nessuna delle altre opzioni! – Affe
Non una risposta, ma un suggerimento. Questo "dilemma" è gestito in http://www.jooq.org, dove tutti i tipi numerici sono trattati come oggetto, e questo "fatto" JDBC è astratto ... Quindi con jOOQ, non c'è bisogno di scrivere il proprio wrapper per Mancanze di JDBC –