首页 > 其他 > 详细

MyBatis插入并获取自增主键

时间:2020-04-16 21:10:05      阅读:65      评论:0      收藏:0      [点我收藏+]

MyBatis插入并获取自增主键

在MyBatis中,经常会使用到自增主键,但是在一个方法体内插入后如何获取自增后的主键呢?

我们知道insert和insertSelective两个方法都会有一个Integer类型返回值,它是不是我们要的自增主键呢?答案是:当然不是!

MyBatis当然知道我们的这个需求,也提供了对应的解决方案,而且是两种。接下来我们一起看看吧

方案1:在插入后查询最后一条数据的id

在插入元素后我们查询一下最后一条数据的id,不就可以拿到这个对象的id了吗

  <insert id="insertSelective" parameterType="cn.rayfoo.dao.User">
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into user
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="name != null">
        name,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>

方案2:在insert标签上加上如下属性

  • 设置useGeneratedKeys为true

  • 指定keyProperty为主键的字段名称

  <insert id="insertSelective" parameterType="cn.rayfoo.dao.User" useGeneratedKeys="true" keyProperty="id">
  </insert>

注意:

  1. 通过这两种方式获取的主键,不是通过返回值的形式返回,而是直接赋值给insertSelective操作的那个bean对象。
  2. 如果标签中插入了多条数据,那么拿到的id将会是最后一条,也就是说这个方法不适用于批量插入的insert语句。

MyBatis插入并获取自增主键

原文:https://www.cnblogs.com/zhangruifeng/p/12715194.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!