Retrieving Auto-generated Keys
一个 update()
方便的方法支持检索由数据库生成的主键。这种支持是 JDBC 3.0 标准的一部分。详见规范的第 13.6 章。该方法将一个PreparedStatementCreator 作为其第一个参数,这是指定所需插入语句的方式。另一个参数是一个 KeyHolder,它包含从更新中成功返回时生成的 key。没有标准的单一方法来创建一个适当的 PreparedStatement(这解释了为什么方法签名是这样的)。下面的例子在 Oracle 上可行,但在其他平台上可能不可行:
final String INSERT_SQL = "insert into t_actor (first_name) values(?)";
final String name = "Rob";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
// 返回自动生成的键
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "id" });
ps.setString(1, name);
return ps;
}, keyHolder);
// 1
System.out.println(keyHolder.getKey());
如上图所示,返回的是一个 GENERATED_KEY