ib交换机 postgresql_【MyBtis】获取数据插入postgresql后返回的自增id

在使用 PostgreSQL 数据库时,如果表中的 id 设置为自增,通常需要在插入数据后立即获取自增的 id。本文介绍了两种解决方案:1) 使用 selectKey 进行子查询,设置 order=“AFTER”以确保在 INSERT 之后执行;2) 利用 useGeneratedKeys 和 keyProperty 属性,让 JDBC 自动获取并赋值给实体的 id 属性。这两种方法在实践中都能有效获取到自增 id。
摘要由CSDN通过智能技术生成

问题描述

数据库采用的是postgresql,以下面的rule表为例,该表的id设置为自增,那么经常有这样的需求,在执行insert操作后,紧接着需要获取该记录的自增id往中间表中插入数据,或者是再根据id做一些查询之类的。

70de21de11e2fcf69e4da7a6394a5ca8.png

61bff27dc8ddf939645e5f6c3adc7657.png

解决办法

以下两种方法效果一致

1、采用selectKey做一个子查询,赋值给属性id,并设置order=“AFTER”让其是在INSERT之后再执行,这样才能获取到自增id。mapper代码如下。需要注意的是,这里的resultType要跟Rule实体中id的类型一致,否则会报错。

SELECT currval('rule_id_seq')

INSERT INTO rule (name, used_dimension)

VALUES (

#{name, jdbcType=VARCHAR},

#{usedDimension, jdbcType=OTHER, typeHandler=com.yealink.ptms.typeHandler.JSONTypeHandlerPg}

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值