我正在使用 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;
但是当我尝试在<insert>
sqlMap 中使用它时,ibatis 不会返回 id。它似乎需要<selectKey>
标签。
那么问题来了:
我如何将上述语句与 ibatis 一起使用?