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

Database 是否可以使用JDBI中的句柄从insert获取生成的密钥?,database,jdbi,Database,Jdbi,我知道有@GeneratedKeys,但我不能将其与处理程序一起使用(我在测试中使用的是处理程序)。是的,绝对可以使用句柄检索生成的键(例如,自动递增主键)(我假设您指的是句柄而不是处理程序)。例如,假设一个整数生成的键: handle.createStatement("INSERT ...") .bind("foo", foo) .executeAndReturnGeneratedKeys(IntegerMapper.FIRST).first(); 请注意,JDBC驱动程序支

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

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

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

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

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

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

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

在JDBI 3中,这已更改为

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

在JDBI3中,这已更改为

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

您可以添加更多的代码示例(例如测试中的处理程序)吗?您可以添加更多的代码示例(例如测试中的处理程序?)