通过 jdbctemplate 从 sql insert 获得的身份
是否可以从 Spring jdbc 模板调用的 SQL 插入中获取@@identity?如果是这样,如何?
是否可以从 Spring jdbc 模板调用的 SQL 插入中获取@@identity?如果是这样,如何?
该方法被重载以采用一个名为 GenerateKeyHolder 的对象,您可以使用该对象来检索自动生成的键。例如(代码取自此处):JDBCTemplate.update
final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps =
connection.prepareStatement(INSERT_SQL, new String[] {"id"});
ps.setString(1, name);
return ps;
}
},
keyHolder);
// keyHolder.getKey() now contains the generated key
怎么样?它采用两种形式,具体取决于输入:SimpleJdbcInsert.executeAndReturnKey
地图
public java.lang.Number executeAndReturnKey(java.util.Map<java.lang.String,?> args)
从接口复制的描述:
SimpleJdbcInsertOperations
使用传入的值执行插入,并返回生成的密钥。这要求指定具有自动生成键的列的名称。此方法将始终返回 a,但调用方必须验证它是否确实包含生成的密钥。
KeyHolder
指定者:
executeAndReturnKey
in interfaceSimpleJdbcInsertOperations
参数:
args - Map containing column names and corresponding value
返回:
the generated key value
Sql 参数源
public java.lang.Number executeAndReturnKey(
SqlParameterSource
parameterSource)
从接口复制的描述:
SimpleJdbcInsertOperations
使用传入的值执行插入,并返回生成的密钥。这要求指定具有自动生成键的列的名称。此方法将始终返回 a,但调用方必须验证它是否确实包含生成的密钥。
KeyHolder
指定者:
executeAndReturnKey
in interfaceSimpleJdbcInsertOperations
参数:
parameterSource - SqlParameterSource containing values to use for insert
返回:
生成的键值。