¿Es posible obtener la identidad @@ desde la inserción de SQL en una llamada de plantilla Spring jdbc? ¿Si es así, cómo?identidad desde la inserción de sql a través de jdbctemplate
Respuesta
El método JDBCTemplate.update
está sobrecargado para tomar un objeto llamado GeneratedKeyHolder que puede usar para recuperar la clave autogenerada. Por ejemplo (tomado de código here):
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
¿Qué tal SimpleJdbcInsert.executeAndReturnKey?
Guau, realmente no sabía nada de esa clase, un poco ordenada. Gracias. +1 – javamonkey79
Me gusta más esta versión que la versión con PreparedStatementCreator. – ruslanys
Adición de notas detalladas/código de ejemplo para responder a 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();
Me enfrento a esta excepción: org.springframework.dao.InvalidDataAccessResourceUsageException: la función getGeneratedKeys no es compatible con esta base de datos –
@ Az.MaYo - Su problema podría estar relacionado con la versión del controlador JDBC. –
- 1. Insertar inserción de SQL @@ Identidad
- 2. La inserción de identidad en el servidor vinculado falla
- 3. inserción de identidad tsql sin lista de nombres de columna
- 4. Velocidad de inserción Sql
- 5. Obtener la identidad de la inserción múltiple en el servidor sql 2008
- 6. ¿Cómo generar una lista dinámica "in (...)" sql a través de Spring JdbcTemplate?
- 7. ¿SQL Server garantiza la inserción secuencial de una columna de identidad?
- 8. SQL tema de la identidad del servidor
- 9. Inserción múltiple múltiple de SQL
- 10. SQL - Inserción y actualización de múltiples registros a la vez
- 11. Inserción de una fila y la recuperación de la identidad de la nueva fila en SQL Server CE
- 12. Datos de inserción desde el servidor Sql a la aplicación de escritorio
- 13. Cómo agregar identidad a la columna en SQL Server?
- 14. Spring JdbcTemplate no puede obtener la Id. De inserción de MySQL
- 15. Ver el SQL subyacente en Spring JdbcTemplate?
- 16. SQL Server - restablecer el campo de identidad
- 17. iSeries DB2: ¿hay alguna manera de seleccionar el valor de identidad de una instrucción de inserción?
- 18. DBCC CHECKIDENT Establece identidad a 0
- 19. TSQL - Inserción para llevarlo a SQL dinámico
- 20. Obtener clave de identidad automática después de insertar a través de EF
- 21. Generar inserción sql en Oracle
- 22. Proceso de inserción muy lento utilizando Linq a Sql
- 23. ¿Cómo puedo emitir un solo comando desde la línea de comando a través de sql plus?
- 24. Uso de declaraciones preparadas con JDBCTemplate
- 25. SQL Injection a través de mysql_query
- 26. Inserción/actualización masiva de servidor Sql frente a MERGE en el escenario de inserción o actualización
- 27. columna de identidad en el servidor Sql
- 28. ¿Crear identidad de SQL como clave principal?
- 29. identidad del grupo de aplicaciones frente a identidad de suplantación?
- 30. Tipo de datos JdbcTemplate y inet
Ese sería el "un trazador de líneas" que estoy buscando aquí. Bonito. Lo triste es que vi el enlace pero pasé por alto debido a esto: "parte del estándar JDBC 3.0". (No creo que usemos JDBC 3.0, pero tampoco creo que esto sea relevante). – javamonkey79
Se obtiene un verdadero trazador de líneas en Java 8 con lambdas \ m/ – fabwu