在重构之前,我使用 jdbcTemplate、preparedStatementCreator 和 GeneratedKeyHolder 将一行插入到数据库中,以存储插入行的生成 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);
假设我对preparedStatements 的方法是正确的,有谁知道我如何返回生成的id 的值?