本ブログはアフィリエイト広告を利用しています。

Spring JDBCTemplate#queryが@Deprecatedになっていた

個人で何か作る時は大体過去の自分のソースを参考にしながらコーディングしていくこともあるのですが、SQL実行時に使用していたquery()が@Deprecatedとなり非推奨になっていました。

なので代わりとなるメソッドを探しました。

環境

現在

  • Spring Boot 2.5.3(spring-jdbc 5.3.9)
  • JDK 11

過去

  • Spring Boot 2.3.1(spring-jdbc 5.2.7)
  • JDK 11

query(String sql, Object[] args, RowMapper<T> rowMapper)は @Deprecatedに

JDBCTemplateでSQL実行時に使用していたqueryメソッドがSpring Boot 2.3.1(spring-jdbc 5.2.7)からSpring Boot 2.5.3(spring-jdbc 5.3.9)の間で非推奨となりました。どのバージョンからかは調べてないです。

JavaDoc : query(String sql, Object[] args, RowMapper rowMapper)

これの代わりは何だろなとeclipseの補完機能でメソッド見ててそれっぽいのがこちらです。

JavaDoc : query(String sql, Object[] args, int[] argTypes, RowMapper rowMapper)

1個引数が追加してあるものです。 spring-jdbc 5.2.7 にもあったので新規追加されたメソッドではないです。

argTypesはjava.sql.Typesを使用します。こんな感じになります。

    public AccountEntity selectByAccountName(String accountName) {
        String sql = "select * from account where name = ?";
        Object params[] = new Object[] {accountName};
        int types[] = new int[] {Types.VARCHAR};

        List<AccountEntity> entities = template.query(sql, params, types, new AccountMapper());

        if (CollectionUtils.isEmpty(entities)) {
            return null;
        }

        return entities.get(0);
    }

以上です。

コメント

タイトルとURLをコピーしました