如何在带有 Ibatis 的 Inserts 上返回 id ( 使用 RETURN 关键字 )
2022-09-04 00:51:13
我使用的是iBatis/Java和Postgres 8.3。当我在ibatis中插入时,我需要返回id。
我使用下表来描述我的问题:
序列通过运行 create 语句自动生成。CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
sometable_id_seq
目前,我使用以下sql映射:
<insert id="insertValue" parameterClass="string" >
INSERT INTO sometable ( somefield ) VALUES ( #value# );
<selectKey keyProperty="id" resultClass="int">
SELECT last_value AS id FROM sometable_id_seq
</selectKey>
</insert>
这似乎是检索新插入的id的ibatis方式。Ibatis 首先运行一个 INSERT 语句,然后它要求序列提供最后一个 id。
我怀疑这是否适用于许多并发插入。(在这个问题中讨论 )
我想将以下语句与 ibatis 一起使用:INSERT INTO sometable ( somefield ) VALUES ( #value# ) RETURNING id;
但是当我尝试在sqlMap中使用它时,ibatis不会返回id。它似乎需要标签。<insert>
<selectKey>
所以问题来了:
如何将上述声明与伊巴蒂斯一起使用?