【发布时间】:2010-12-18 16:30:17
【问题描述】:
我正在使用 iBatis/Java 和 Postgres 8.3。
当我在 ibatis 中插入时,我需要返回 id。
我使用下表来描述我的问题:CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
序列sometable_id_seq 通过运行 create 语句自动生成。
目前我使用以下 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>
这似乎是 ibatis 检索新插入的 id 的方式。 Ibatis 首先运行一个 INSERT 语句,然后它向序列询问最后一个 id。
我怀疑这是否适用于许多并发插入。 (discussed in this question)
我想在 ibatis 中使用以下语句:INSERT INTO sometable ( somefield ) VALUES ( #value# ) RETURNING id;
但是当我尝试在<insert> sqlMap 中使用它时,ibatis 不会返回 id。它似乎需要<selectKey> 标签。
那么问题来了:
如何在 ibatis 中使用上述语句?
【问题讨论】:
标签: java postgresql ibatis