JdbcTemplate queryForİnt/Uzun İlkbahar 3.2.2 önerilmiyor. Bunun yerine ne olmalı?
JdbcTemplate içinde queryforİnt/queryforLong yöntemleri Bahar 3.2 kaldırılmıştır. Mevcut kod bu yöntemleri kullanarak değiştirmek için en iyi yöntem olarak kabul edilir neden ve ne olduğunu bulamıyorum.
Tipik bir yöntem:
int rowCount = jscoreJdbcTemplate.queryForInt(
"SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?",
playerNameKey.toUpperCase(),
teamNameKey.toUpperCase()
);
TAMAM yukarıdaki yöntem aşağıdaki gibi yeniden yazılması gerekiyor
Object[] params = new Object[] {
playerNameKey.toUpperCase(),
teamNameKey.toUpperCase()
};
int rowCount = jscoreJdbcTemplate.queryForObject(
"SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?",
params, Integer.class);
Belli ki bu admin JdbcTemplate sınıfı daha basit (?) yapar. QueryForİnt her zaman kolaylık yöntemi (sanırım) oldu ve uzun bir süre civarında olmuştur. Neden kaldırıldı. Kodu bir sonucu olarak daha karmaşık hale gelir.
CEVAP
Bence biri ne kafa karıştırıcı anlambilim, yani JdbcTemplate kaynak vardır/queryForİnt geçerli uygulaması, görebilirsiniz kod olduğunu fark ettim:
@Deprecated
public int queryForInt(String sql, Object... args) throws DataAccessException {
Number number = queryForObject(sql, args, Integer.class);
return (number != null ? number.intValue() : 0);
}
0, ancak döner hangi bir özel durum atar:
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
aşağıdaki uygulama geçerli bir aslında şuna eşdeğerdir:
@Deprecated
public int queryForInt(String sql, Object... args) throws DataAccessException {
return queryForObject(sql, args, Integer.class);
}
Ve sonra sigara kaldırılmış kodu şimdi çirkin ile değiştirilmesi gerekir:
queryForObject(sql, new Object { arg1, arg2, ...}, Integer.class);
ya bu (güzel):
queryForObject(sql, Integer.class, arg1, arg2, ...);
java.net.URLEncoder.kodlama(Dizi), ben...
Java: Tarih önerilmiyor Neden, ve ben ...
Neden veritabanı özellikleri göz ardı ...
YA da bunun yerine kapsamı sorgular zi...
Neden basit bir 1L yerine uzun serialV...