@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 к вопросу.