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

叙述

项目中使用 JdbcTemplate  和  NamedParameterJdbcTemplate  其实足够应付一般的Dao开发了。

但是特别的需求,需要获取操作后的id。

解决方案

JdbcTemplate  和  NamedParameterJdbcTemplate  都性,关键是 通过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 + ", 
发布了22 篇原创文章 · 获赞 30 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/lizhengyu891231/article/details/103938177