Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zwrócić identyfikatory na insertach z mybatis w mysql z adnotacjami

Właściwie można to zrobić za pomocą @Options adnotacja (pod warunkiem, że używasz auto_increment lub czegoś podobnego w swojej bazie danych):

@Insert("insert into table3 (id, name) values(null, #{name})") 
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean); 

Zwróć uwagę, że keyProperty="idName" część nie jest konieczna, jeśli właściwość key w SomeBean nosi nazwę „id”. Jest też keyColumn dostępny atrybut, w rzadkich przypadkach, gdy MyBatis nie może samodzielnie znaleźć kolumny klucza podstawowego. Pamiętaj również, że używając @Options , przesyłasz swoją metodę do pewnych domyślnych parametrów; ważne jest, aby zapoznać się z dokumentacją (link poniżej - strona 60 w aktualnej wersji)!

(Stara odpowiedź) (dość niedawno) @SelectKey Adnotacja może być użyta do bardziej złożonego wyszukiwania kluczy (sekwencje, funkcja identity()...). Oto, co Podręcznik użytkownika MyBatis 3 (pdf) oferuje jako przykłady :

@Insert("insert into table3 (id, name) values(#{nameId}, #{name})") 
@SelectKey(statement="call next value for TestSequence", keyProperty="nameId", before=true, resultType=int.class) 
int insertTable3(Name name); 
@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertowanie ciągu znaków na format znacznika czasu MySQL w php

  2. Usuwanie duplikatów w MySQL

  3. Lepszy sposób na wygenerowanie tej tablicy json z danych MySql za pomocą php

  4. bind_param() konieczne tylko w przypadku wartości wprowadzonych przez użytkownika czy wszystkich?

  5. Porządkowanie według kolejności wartości w klauzuli SQL IN()