JdbcTemplate queryForInt () ist veraltet

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