Czy można uzyskać tożsamość @@ z wstawienia SQL w wywołaniu szablonu Spring jdbc? Jeśli tak to jak?Identyfikacja z sql insert via jdbctemplate
Odpowiedz
Metoda JDBCTemplate.update
jest przeciążona, aby pobrać obiekt o nazwie GeneratedKeyHolder, za pomocą którego można pobrać wygenerowany automatycznie klucz. Na przykład (kod pochodzi z 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
Jak o SimpleJdbcInsert.executeAndReturnKey?
Wow, tak naprawdę nie wiedziałem o tej klasie - w porządku. Dzięki. +1 – javamonkey79
Podoba mi się ta wersja więcej niż wersja z PreparedStatementCreator. – ruslanys
Dodawanie szczegółowe notatki/przykładowy kod do todd.pierzina odpowiedzieć
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();
Mam do czynienia z tym wyjątkiem: org.springframework.dao.InvalidDataAccessResourceUsageException: Funkcja getGeneratedKeys nie jest obsługiwana przez tę bazę danych –
@ Az.MaYo - Problem może dotyczyć wersji sterownika JDBC. –
- 1. SQL - Identyfikacja tabeli źródłowej z zapytania UNION
- 2. SQL Server - Po Insert/Dla Insert - Wycofanie
- 3. SQL injection na INSERT
- 4. Oracle Insert via Wybierz z wielu tabel, w których jedna tabela może nie mieć wiersza
- 5. T-SQL INSERT INTO z LEFT JOIN
- 6. SQL: INSERT INTO ... VALUES..SELECT
- 7. Wstawianie wielu wierszy przy użyciu JdbcTemplate
- 8. JdbcTemplate wiele zestawów wyników
- 9. Utwórz skrypt SQL INSERT z wartościami zebranymi z tabeli
- 10. SQL INSERT INTO WITH SELECT zapytanie
- 11. Używanie Dict Python dla instrukcji SQL INSERT
- 12. Składnia INSERT INTO SET w SQL Server
- 13. Serwer SQL 2014 Insert IN NOT IN
- 14. spring jdbcTemplate jak złapać wyjątek?
- 15. SQL: warunek (IF-ELSE) w INSERT INTO
- 16. Inject motion event via windowmanger?
- 17. Wiosna jdbcTemplate testowanie jednostkowe
- 18. Zwracana wartość z polecenia SQL Server Insert użyciu C#
- 19. Jak wygenerować instrukcje insert z serwerem Sql 2012?
- 20. Optymalny sposób na tworzenie długich zapytań SQL insert z PDO
- 21. SQL INSERT brakujące wiersze z tabeli A do tabeli B
- 22. rekord INSERT do tabeli SQL z kolumny IDENTITY
- 23. Narzędzie do eksportu zestawu wyników z SQL do instrukcji Insert?
- 24. SQL Server - INSERT nie powiodło się z powodu "ARITHABORT"
- 25. Wykonywanie INSERT INTO ... WYBIERZ z LINQ do SQL
- 26. Spring JdbcTemplate i Transakcje
- 27. Identyfikacja ASP.NET z wieloma aplikacjami
- 28. Identyfikacja UIStoryboard
- 29. pomocą wiosna JdbcTemplate - wstrzyknięcie źródła danych vs jdbcTemplate
- 30. .NET Entity Framework Insert vs Bulk Insert
To byłby "jeden liniowiec", którego tutaj szukam. Miły. Smutne jest to, że zobaczyłem link, ale pominąłem go z powodu tego: "część standardu JDBC 3.0". (Nie sądzę, że używamy JDBC 3.0, ale nie sądzę, że jest to istotne). – javamonkey79
Staje się prawdziwą liner w Java 8 z lambdas \ m/ – fabwu