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


解决办法
以下两种方法效果一致
1、采用selectKey做一个子查询,赋值给属性id,并设置order=“AFTER”让其是在INSERT之后再执行,这样才能获取到自增id。mapper代码如下。需要注意的是,这里的resultType要跟Rule实体中id的类型一致,否则会报错。
<insert id="insert" parameterType="com.yealink.ptms.pojo.Rule" >
<selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
SELECT currval('rule_id_seq')
</selectKey>
INSERT INTO rule (name, used_dimension)
VALUES (
#

在使用MyBatis操作PostgreSQL数据库时,针对自增id的表,需要在插入数据后获取自增id。本文介绍了两种方法:1) 使用selectKey作为子查询,设置order为“AFTER”;2) 使用useGeneratedKeys和keyProperty。这两种方法都可以成功获取到新插入记录的自增id。
最低0.47元/天 解锁文章
6180

被折叠的 条评论
为什么被折叠?



