JdbcTemplate queryForInt () ist veraltet
Aktualisieren der Spring-Version und festgestellt, dassqueryForInt() veraltet ist. Womit sollte ersetzt werden?
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;
}
Lösung
SowohlqueryForInt() als auchqueryForLong() sind seit Version 3.2.2 veraltet (korrigieren Sie mich, wenn ein Fehler vorliegt). Ersetzen Sie den Code durchqueryForObject(String, Class), um das Problem zu beheben.
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;
}
Überprüfen Sie den Spring-Quellcode.
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);
}