从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" ); 

体面的文章在这里 。