Retrieving Auto-generated Keys

    一个 update()方便的方法支持检索由数据库生成的主键。这种支持是 JDBC 3.0 标准的一部分。详见规范的第 13.6 章。该方法将一个PreparedStatementCreator 作为其第一个参数,这是指定所需插入语句的方式。另一个参数是一个 KeyHolder,它包含从更新中成功返回时生成的 key。没有标准的单一方法来创建一个适当的 PreparedStatement(这解释了为什么方法签名是这样的)。下面的例子在 Oracle 上可行,但在其他平台上可能不可行:

    1. final String INSERT_SQL = "insert into t_actor (first_name) values(?)";
    2. final String name = "Rob";
    3. KeyHolder keyHolder = new GeneratedKeyHolder();
    4. jdbcTemplate.update(connection -> {
    5. // 返回自动生成的键
    6. PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "id" });
    7. ps.setString(1, name);
    8. return ps;
    9. }, keyHolder);
    10. // 1
    11. System.out.println(keyHolder.getKey());

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