使用NamedParameterJdbcTemplate执行insert时获取到自增id

使用NamedParameterJdbcTemplate执行insert时获取到自增id

JdbcTemplateNamedParameterJdbcTemplate 其实足够应付一般的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 + ",