是否可以使用JDBI中的句柄从插入中获取生成的键?

时间:2016-07-13 16:47:33

标签: database jdbi

我知道有@GeneratedKeys,但我不能将它用于处理程序(我在测试中使用处理程序)。

2 个答案:

答案 0 :(得分:2)

是的,绝对可以使用句柄检索生成的键(例如,自动递增主键)(我假设你的意思是句柄而不是处理程序 )。例如,假设生成整数键:

handle.createStatement("INSERT ...")
    .bind("foo", foo)
    .executeAndReturnGeneratedKeys(IntegerMapper.FIRST).first();

请注意,支持java.sql.Statement.getGeneratedKeys()的JDBC驱动程序存在依赖关系,但如果注释驱动的返回方法适用于您的数据库,我希望这种方法也是如此。

答案 1 :(得分:1)

在JDBI 3中,该名称已更改为

 handle.createUpdate("INSERT ...")
   .bind("foo", foo)
   .executeAndReturnGeneratedKeys("id")
   .mapTo(Long.class)
   .findOnly()