SORU
27 Mart 2013, ÇARŞAMBA


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
5 NİSAN 2013, Cuma


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, ...);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hanksranger

    hanksranger

    6 EKİM 2009
  • ipsy

    ipsy

    1 EKİM 2012
  • Pepsi

    Pepsi

    1 Kasım 2005