リファクタリングの前に、jdbcTemplate、preparedStatementCreator、および GeneratedKeyHolder を使用して db に行を挿入し、挿入された行の生成された ID を格納していました。
jdbcTemplate.update(SomePreparedStatementCreator, generatedKeyHolder)
ただし、今は jdbcTemplate を使用して更新を実行しようとしていますが、現在は PreparedStatementSetter を使用しています。これについて私が見ることができる唯一の方法は jdbcTemplate.update(String sql, PreparedStatementSetter) ですが、生成された列の ID を返す方法がわかりません。
PreparedStatementSetter pss = new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement preparedStatement)
throws SQLException {
preparedStatement.setString(1, pupil.getFirstname());
preparedStatement.setString(2, pupil.getSurname());
preparedStatement.setString(3, pupil.getGivenName());
preparedStatement.setDate(4, pupil.getDob());
}
};
jdbcTemplate.update("INSERT INTO STUDENTS "+ "(FIRSTNAME, SURNAME, GIVEN_NAME, DOB) VALUES (?,?,?,?)",pss);
準備されたステートメントへの私のアプローチが正しいと仮定すると、生成されたIDの値を返す方法を知っている人はいますか?