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); }