使用NamedParameterJdbcTemplate执行insert时获取到自增id
JdbcTemplate
和 NamedParameterJdbcTemplate
其实足够应付一般的Dao开发了。
NamedParameterJdbcTemplate
使用
JdbcTemplate
也是一样, 关键是 通过KeyHolder
接口,获取到自增的id
GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();
String sql = "INSERT INTO `user`(`gender`, `name`, `version`) VALUES(:gender, :name, :version);";
Map<String, Object> param = new HashMap<>();
param.put("gender", Gender.BOY.ordinal());
param.put("name", "KevinBlandy");
param.put("version", 0);
int retVal = this.namedParameterJdbcTemplate.update(sql, new SqlParameterSource() {
@Override
public boolean hasValue(String paramName) {
return param.containsKey(paramName);
}
@Override
public Object getValue(String paramName) throws IllegalArgumentException {
return param.get(paramName);
}
}, generatedKeyHolder);
Integer id = generatedKeyHolder.getKey().intValue();
System.err.println("受到影响的行数=" + retVal + ",