JdbcTemplate queryForInt()は推奨されていません
Springのバージョンをアップグレードし、 `queryForInt()`が非難されていることに気づいたら、何を置き換えるべきですか?
private boolean isUserExists(String username) {
String sql = "SELECT count(** ) FROM USERS WHERE username = ?";
boolean result = false;
//The method queryForInt(String, Object...) from the type JdbcTemplate is deprecated
int count = getJdbcTemplate().queryForInt(sql, new Object[]{ username });
if (count > 0) {
result = true;
}
return result;
}
解決策
`queryForInt()`と `queryForLong()`はバージョン3.2.2以降で廃止されました(間違えば私を修正してください)。これを修正するには、コードを `queryForObject(String、Class)`に置き換えます。
private boolean isUserExists(String username) {
String sql = "SELECT count(** ) FROM USERS WHERE username = ?";
boolean result = false;
int count = getJdbcTemplate().queryForObject(
sql, new Object[]{ username }, Integer.class);
if (count > 0) {
result = true;
}
return result;
}
Springのソースコードを見直してください。
JdbcTemplate.java
package org.springframework.jdbc.core;
public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
//...
@Deprecated
public long queryForLong(String sql, Object... args) throws DataAccessException {
Number number = queryForObject(sql, args, Long.class);
return (number != null ? number.longValue() : 0);
}
@Deprecated
public int queryForInt(String sql, Object... args) throws DataAccessException {
Number number = queryForObject(sql, args, Integer.class);
return (number != null ? number.intValue() : 0);
}
参考文献
JdbcTemplate JavaDoc]