从sql插入通过jdbctemplate的身份
是否有可能从SQL插入的Spring jdbc模板调用中获取@@ identity? 如果是这样,怎么样?
JDBCTemplate.update
方法被重载以获取一个名为GeneratedKeyHolder的对象,您可以使用该对象来检索自动生成的密钥。 例如(取自这里的代码):
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怎么样?
添加详细的笔记/示例代码到todd.pierzina的答案
jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("TABLE_NAME").usingGeneratedKeyColumns( "Primary_key"); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("Column_NAME1", bean.getval1()); parameters.put("Column_NAME2", bean.getval2()); // execute insert Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource( parameters)); // convert Number to Int using ((Number) key).intValue() return ((Number) key).intValue();
我不知道是否有一个“一行”,但这似乎有伎俩(至lessMSSQL):
// -- call this after the insert query... this._jdbcTemplate.queryForInt( "select @@identity" );
体面的文章在这里 。