如何 return 在 Spring 数据 R2DBC 中使用 Fluent Data Access API 生成 ID

How to return generated ID with Fluent Data Access API in Spring Data R2DBC

我的数据库在插入新记录时自动生成 ID,我想在插入完成后在我的代码中使用生成的 ID。当使用Statement时,可以通过following approach.

来实现
db.execute("INSERT INTO table (name, state) VALUES(:name, :state)")
    .filter { s, next -> next.execute(s.returnGeneratedValues("id")) }
    .bind("name", name)
    .bind("state", state)
    .map { t -> t.get("id", Long::class.java) }

但是,我目前正在使用 Fluent Data Access API,因此在我的案例中,将赞赏以下列代码样式获取插入 ID 的方法。

db.insert().into("table")
    .value("name", name)
    .value("state", state)
    // get generated ID

有什么解决办法吗?

您应该可以使用相同的 map 方法:

db.insert().into("test")
    .value("name", name)
    .value("state", state)
    // Use "LAST_INSERTED_ID" for MySQL
    .map { t -> t.get("id", java.lang.Long::class.java) }
    .one()

(我假设 table 中生成的 ID 列称为 id