Spring JDBC - 最后插入的 id
Posted
技术标签:
【中文标题】Spring JDBC - 最后插入的 id【英文标题】:Spring JDBC - Last inserted id 【发布时间】:2011-08-07 21:05:41 【问题描述】:我正在使用 Spring JDBC。是使用 Spring Framework 获取最后插入的 ID 的简单方法还是我需要使用一些 JDBC 技巧?
jdbcTemplate.update("insert into test (name) values(?)", params, types);
// last inserted id ...
我在下面找到了类似的东西,但我得到了:org.postgresql.util.PSQLException: Returning autogenerated keys is not supported.
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator()
@Override
public PreparedStatement createPreparedStatement(
Connection connection) throws SQLException
PreparedStatement ps = connection.prepareStatement("insert into test (name) values(?)", new String[] "id");
ps.setString(1, "test");
return ps;
, keyHolder);
lastId = (Long) keyHolder.getKey();
【问题讨论】:
【参考方案1】:旧的/标准的方法是在插入 (ref) 之后使用调用 currval()。简单又安全。
【讨论】:
谢谢。我是这样做的:jdbcTemplate.queryForLong("select currval('main_seq')");
【参考方案2】:
仅从 PostgreSql Ver 8.4-701 开始支持“为 PreparedStatements 生成密钥”。
【讨论】:
以上是关于Spring JDBC - 最后插入的 id的主要内容,如果未能解决你的问题,请参考以下文章