使用场景: 当调用JDBCTemplate的提供的方法不能完成业务需求的时候 比如不能使用update后带返回值
可以实现createPreparedStatement的方式 使用原始的jdbc完成一个PreparedStatement的组建
代码如下:
PreparedStatementCreator creator = new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
//使用原始的jdbc完成一个PreparedStatement的组建
String sql = "insert into sys_user values(null,?,?,?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
preparedStatement.setObject(1,user.getUsername());
preparedStatement.setObject(2,user.getEmail());
preparedStatement.setObject(3,user.getPassword());
preparedStatement.setObject(4,user.getPhoneNum());
return preparedStatement;
}
};
//创建keyHolder
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(creator,keyHolder);
//获取生成的主键
long userId = keyHolder.getKey().longValue();
return userId;