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);// 1System.out.println(keyHolder.getKey());

如上图所示,返回的是一个 GENERATED_KEY
