MyBatis插入一条记录同时获取刚插入数据的id

在关联表数据的插入中,先插入主表数据,主表数据的id设计为自增长,然后再插入辅表数据,其中主表的id值需要作为辅表字段的值插入辅表中,如何实现更便捷呢?之前使用的笨方法,先判断主表是否插入成功,如果插入成功,根据倒序查询出最近一条记录,从而得到刚插入主表数据的id。事实上,有一种方法更快捷省事,就是在插入主表的SQL中,使用

useGeneratedKeys="true" keyProperty="id" 即可实现。(注意id需替换为自己表id对应的属性名),具体如下:
 <insert id="insert" parameterType="com.project.shfw.huifang.bean.HuiFang" useGeneratedKeys="true" keyProperty="id">
    insert into huifang
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
    ..........
   </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id},
      </if>
   .........
   </trim>
  </insert>

下面是业务层代码:

 //插入主表数据,此时record中的id为null
 i=huiFangMapper.insert(record);
 //主表插入成功后,此时record中的id为数据表自增长生成的具体id值
 insertHfUnit(record);

下面为数据主表的数据:

下面是辅表的数据:

可见在xml映射文件的insertSQL中设置useGeneratedKeys为true,并指定主键id在实体类的属性名,将会返回数据库自动生成的记录主键id

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值