個人で何か作る時は大体過去の自分のソースを参考にしながらコーディングしていくこともあるのですが、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);
}
以上です。
コメント