Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1

Posted 裸奔的太阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1相关的知识,希望对你有一定的参考价值。

 

记录一次傻逼的问题, 自己把自己蠢哭:Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1

 

错误说明:

  返回的1是影响的行数,并不是自增的主键id;

  想要获取自增主键id,需要通过xx.getId()方法获取,因为在mybatis中指定自增主键id封装到了对象的属性中,所以我们需要在对象中来获取

 

代码示例如下:

<insert id="add"
        useGeneratedKeys="true" keyColumn="id" keyProperty="id"
        parameterType="user">
    INSERT INTO `user` (`name`,sex,register_ts) VALUES (#{name},#{sex},#{registerTs})
    <selectKey resultType="int" keyProperty="id" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

 

错误说明:

1. 想要获取自增主键id,应该通过对象的getId()方法,而并不是insert的返回值,insert的返回值表示的是影响行数

2.在mapper.xml中:useGeneratedKeys="true"、keyProperty="id",这两个属性的作用:

  共同决定了sql执行后,会将主键封装到id属性上;

  自增主键封装到了对象的id属性上了,那么想要获取,直接调用对象的getId()方法就可以了

 

以上是关于Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1的主要内容,如果未能解决你的问题,请参考以下文章

mybatis插入数据后返回自增的主键id

mybatis批量插入,然后获取每个对象自增的id,怎么实现啊

使用mybatis插入自增主键ID的数据后返回自增的ID

高效开发:Mybatis中useGeneratedKeys的用法

高效开发:Mybatis中useGeneratedKeys的用法

Mybatis处理ORACLE自增的问题(通过触发器)