Mybatis 在 insert 插入操作后返回主键 id

今日份鸡汤:努力其实是一种生活状态,并非是为了超越别人,而是给自己一个交代,努力工作,努力生活~

首先要有一张主键为id自增的表,如下:


image.png

其中主键 id 是自增的,那么我们插入数据时就不用插入 id,它会生成一个自增的 id。

当我们在插入一条数据之后,需要获取到这个主键id的值,然后做其他操作,比如记录一下操作历史信息啊之类的。

看一下正常的sql语句:


image.png

但是这种sql执行之后,并不能获取到生成的主键id。如果要获取这个id的值,我们可以通过group_name去再次查库,这样比较麻烦,而且group_name也需要是 unique 唯一性的。

那么,有没有办法让我们能够执行插入语句后,直接获取到生成的 id 呢,当然是有的。

解决方法:

方法一
修改 xml 中的 insert 标签,配置 useGeneratedKeys 和 keyProperty,

useGeneratedKeys="true" keyProperty="id"
image.png

说明:
1、useGeneratedKeys=“true” 表示给主键设置自增长。
2、keyProperty=“id” 表示将自增长后的 Id 赋值给实体类中的 id 字段。

方法二(推荐)
修改 xml 中的 insert 标签,在 insert 标签中编写 selectKey 标签

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

说明:
1、< insert> 标签中没有 resultType 属性,但是 < selectKey> 标签是有的。
2、order=“AFTER” 表示先执行插入语句,之后再执行查询语句。
3、keyProperty=“id” 表示将自增长后的 Id 赋值给实体类中的 id 字段。
4、SELECT LAST_INSERT_ID() 表示 MySQL 语法中查询出刚刚插入的记录自增长 Id。

最终结果,通过实体类的get方法这样就获取到自增的id了:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容