如何在具有Ibatis的插入中返回ID(使用RETURNING关键字)

克里斯多夫:

我正在使用iBatis / Java和Postgres 8.3。当我在ibatis中插入时,我需要返回ID。
我使用下表描述我的问题:通过运行create语句自动生成
CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
Sequence 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中使用上述声明?

卢兹:

<selectKey>元素是的子<insert>元素,其含量在执行之前主要INSERT说法。您可以使用两种方法。

插入记录后获取密钥

此方法的工作取决于您的驱动程序。线程处理可能是一个问题。

在插入记录之前获取密钥

这种方法避免了线程问题,但是需要更多工作。例:

<insert id="insert">
  <selectKey keyProperty="myId"
             resultClass="int">
    SELECT nextVal('my_id_seq')
  </selectKey>
  INSERT INTO my
    (myId, foo, bar)
  VALUES
    (#myId#, #foo#, #bar#)
</insert>

在Java方面,您可以这样做

Integer insertedId = (Integer) sqlMap.insert("insert", params)

这应该给您从my_id_seq序列中选择的密钥

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用new关键字创建具有多个参数的Task,返回Typ,TaskCreationOptions参数?

如何在href中获得具有相同关键字的元素

如何使用WinSCP将名称中具有特定关键字的文件上传到SFTP

如何使用列表中具有字典关键字的元素访问字典值?

如何在不同的 Pandas 数据框中搜索关键字并在父 DF 中更新或创建具有匹配关键字的新列

如何在C中刺激使用register关键字?

如何找到具有两个关键字的文件并返回在特定列/行中修改的日期?

如何在bash中的关键字之后将字符串插入文件的行中

对于具有返回值的快速功能,是否必须使用“ Return”关键字

如何在Vue中选择所有具有特定关键字的$ ref?

如何在IntelliJ IDEA中的某些关键字之后自动插入空格?

默认情况下,如何在Visual Studio 2015中激活ByVal关键字的插入?

如何在插入语句中使用存在关键字

如何使用python脚本在“步骤负载定义”部分中插入关键字?

如何在whoosh中返回匹配我们搜索关键字的对应行?

如何从多个句子中返回列表中的关键字?

在没有cygwin的Windows中,如何在emacs中“在文件中搜索关键字”?

在至少具有抽象方法(Java)的类中,是否必须使用“抽象”关键字吗?

如何返回包含中包含True标志的关键字

elasticsearch如何使用精确搜索并忽略关键字中的关键字特殊字符?

如何在Windows Form C#中获取与该关键字相关的所有网站

如何在VScode中删除带有某些关键字的行

如何在表的所有列中动态查找关键字

如何在TypeScript中使用带有“ declare”关键字的导入?

如何在带有关键字参数的方法中使用带问号的参数

如何在类css中使用特定关键字向所有div添加样式

SQL Server-如何在值中间有句点的记录中使用like关键字

如何在带有limit关键字的sql查询中使用多个order by?

“返回”关键字有什么作用?