È possibile ottenere l'identità @@ dall'inserto SQL in una chiamata modello jdbc Spring? Se é cosi, come?identità da sql insert tramite jdbctemplate
risposta
Il metodo JDBCTemplate.update
è sovraccarico per prendere un oggetto denominato GeneratedKeyHolder che è possibile utilizzare per recuperare la chiave generata automaticamente. Per esempio (codice tratto da 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
Come su SimpleJdbcInsert.executeAndReturnKey?
Wow, non sapevo davvero di quella classe - un po 'pulito. Grazie. +1 – javamonkey79
Mi piace questa versione più della versione con PreparedStatementCreator. – ruslanys
Aggiunta di note dettagliate/codice di esempio per todd.pierzina rispondere
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();
Sono di fronte a questa eccezione: org.springframework.dao.InvalidDataAccessResourceUsageException: la funzione getGeneratedKeys non è supportata da questo database –
@ Az.MaYo: il problema potrebbe essere correlato alla versione del driver JDBC. –
- 1. Ottieni valori colonna identità su INSERT
- 2. Come generare un elenco dinamico "in (...)" sql tramite Spring JdbcTemplate?
- 3. Escape caratteri speciali in SQL INSERT INTO tramite C#
- 4. Creazione di sottodirectory tramite SQL INSERT utilizzando FileTable
- 5. Sintassi dell'istruzione SQL Insert
- 6. Ottieni la chiave di identità automatica dopo l'inserimento tramite EF
- 7. SQL insert select @@ Identity
- 8. java SQL INSERT
- 9. SQL: INSERT INTO ... VALUES..SELECT
- 10. Identità SQL con zeri imbottite
- 11. Come impostare MANUALMENTE un campo Identità in LINQ-A-SQL (IDENTITY INSERT)
- 12. INSERT SQL veloce senza AGGIORNAMENTI
- 13. Inserimento di più righe utilizzando JdbcTemplate
- 14. Do INSERT condizionale con SQL?
- 15. usando Primavera JdbcTemplate - datasource iniettare vs jdbcTemplate
- 16. Instantiating a JdbcTemplate da un java.sql.Connection
- 17. Mimando SQL Insert Trigger con LINQ-to-SQL
- 18. delle identità inserto
- 19. translation mongodb per SQL INSERT ... SELECT
- 20. Spring JdbcTemplate Impossibile ottenere l'ID dell'inserimento da MySQL
- 21. SQL Server trigger commutazione Insert, Delete, Update
- 22. Hibernate e colonna MS SQL Server Identità
- 23. Rimuovi identità da una colonna in una tabella
- 24. SQL INSERT INTO WITH SELECT query
- 25. SQL Injection tramite mysql_query
- 26. Crea identità SQL come chiave primaria?
- 27. è possibile inserire SQL utilizzando select restituire più identità?
- 28. Test delle prestazioni tra QueryDSL SQL vs JDBCTemplate
- 29. INSERT XML in database SQL Server
- 30. Insert/Select con LINQ to SQL
Quello sarebbe il "one liner" che sto cercando qui. Bello. La cosa triste è che ho visto il collegamento ma l'ho sorpassato a causa di questo: "parte dello standard JDBC 3.0". (Non penso che usiamo JDBC 3.0, ma non penso che questo sia rilevante). – javamonkey79
Ottenendo un vero e proprio rivestimento in Java 8 con lambdas \ m/ – fabwu