Java Mybatis 在 insert 之后想获取自增的主键id怎么办

Mybatis 在 insert 之后想获取自增的主键 id,但却总是返回1。也在Mapper XML文件中写了一下代码还是不行。
  <selectKey keyProperty="id" order="AFTER" resultType="int">
      SELECT LAST_INSERT_ID()
 </selectKey>

各种搜索后发现,原来想要获得自增ID,要用对象的getId()方法,修改代码如下

<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()方法就可以了



© 2016-2024 阿尔佛 aerfo.com | 豫ICP备17044542号 | 豫公网安备 41010602000172