5

リファクタリングの前に、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の値を返す方法を知っている人はいますか?

4

1 に答える 1