美文网首页
Mybatis 在 insert 插入操作后返回主键 id

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

作者: wyn_做自己 | 来源:发表于2023-04-06 11:05 被阅读0次

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

    首先要有一张主键为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

    相关文章

      网友评论

          本文标题:Mybatis 在 insert 插入操作后返回主键 id

          本文链接:https://www.haomeiwen.com/subject/uffuddtx.html