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

is it possible to get the generated key from an insert using a handle in JDBI?

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

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

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

请注意,支持 java.sql.Statement.getGeneratedKeys() 的 JDBC 驱动程序存在依赖性,但如果注释驱动的 return 方法适用于您的数据库,我希望这种方法将作为嗯

在 JDBI 3 中,这已更改为

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