插入记录后返回自增主键id
在这里插入图片描述
mapping文件的insert标签中加入如下标签,指明主键名(keyProperty),执行方式(order)为新增完再返回执行,因为只有插入完成后获取的id才是最新的,返回值是Integer类型,也就是新增后返回的自增主键id。

<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
      SELECT LAST_INSERT_ID()
 </selectKey>

这里不用担心并发导致的获取id不一致的问题,LAST_INSERT_ID()方法是原子性的,每个客户端的连接都是隔离的,无需加锁。

注意事项

  1. 如果你的mapping是mybatis generator自动生成的,无论你的主键是否自增,都会默认加上主键字段进行插入,如果需要返回自增主键,插入语句中则无需加入主键。
  2. 在加入上面语句时,不需要在insert标签后加上**useGeneratedKeys=“true” keyProperty=“id”**字段,否则会报主键重复的sql异常。
  3. 返回主键并不是insert这个方法的返回值,插入方法返回的值还是1或者0,代表成功或者失败,这仅仅是对我们传入需要插入对象的id进行一个赋值,通过后台传入对象的getId()方法直接获取就行。
    在这里插入图片描述
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐