Получить сгенерированный идентификатор с помощью MyBatis Annotation Spring Boot - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь выучить MyBatis. Как мне получить автоматически сгенерированный идентификатор после того, как я вставил инструкцию, используя аннотацию @Insert.

Пример моего кода:

@Insert("INSERT INTO user(name, mobile, password) VALUES(#{name}, #{mobile}, #{password})")
@SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Long.class)
Long insertUser(User user);

Я хочу получить сгенерированный идентификатор в качестве возврата из метода вставки.

1 Ответ

0 голосов
/ 07 января 2020

@SelectKey для устаревших драйверов.
Для последних версий драйверов вы должны использовать useGeneratedKeys.
У нас есть запись FAQ , объясняющая, как это сделать с помощью XML mapper.
С аннотацией это будет выглядеть следующим образом.

@Insert("INSERT INTO user(name, mobile, password) VALUES(#{name}, #{mobile}, #{password})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertUser(User user);

Обратите внимание, что метод @Insert возвращает количество обновленных строк, а не сгенерированный ключ.
Сгенерированный ключ присваивается свойству параметра, указанного keyProperty, т.е. User.id в вашем случае.

Для некоторых баз данных вам может потребоваться указать также keyColumn.
Если это не сработало, добавьте версии БД, драйвера и MyBatis к вопросу.

...