Mybatis 插入后返回自增主键 及 获取失败解决方法

注意:该方法只适用于 MySQL 和 SQLServer数据库

使用属性useGeneratedKeys和keyProperty

  • useGeneratedKeys(true/false):设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中
  • keyProperty : 填写 java 对象的字段名称

使用样例

mapper

<insert id="addUser" parameterType="xxx.xxx.model.xx" useGeneratedKeys="true" keyProperty="id">
        insert into user(username, name, password) values (#{item.username}, #{item.name}, #{item.password})
    insert>

service

public void addUser(User user) {
        systemMapper.addUser(user);
        user.getId();
    }

user.getId() 获取不到最新主键id

检查 dao 层接口是否使用了 @Param 注解
例如:

void addUser(@Param("item") User user);

那么修改 mapper.xml

<insert id="addUser" parameterType="xxx.xx.xx" useGeneratedKeys="true" keyProperty="item.id">
        insert into user(username, name, password) values (#{item.username}, #{item.name}, #{item.password})
    insert>

你可能感兴趣的:(JAVA)