ohw*_*ppp 3 java sql sql-server jooq
我有一个非常通用的 API,可以使用 JOOQ 将内容插入到某些表中:
void insert(@NonNull final Table<?> table,
@NonNull final Collection<Field<?>> columns,
@NonNull final Collection<Object> values) {
dslContext.insertInto(table)
.columns(columns)
.values(values)
.execute();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法返回插入的记录的ID?我的数据库中表的所有主键都命名为“id”,因此我可以对它进行 ahrdcode,但我找不到返回它并转换为 Integer / Long 的方法。我正在使用 JOOQ 3.9.5。
编辑:我在下面使用 MSSQL。
写:
long insert(@NonNull final Table<?> table,
@NonNull final Collection<Field<?>> columns,
@NonNull final Collection<Object> values) {
return dslContext
.insertInto(table)
.columns(columns)
.values(values)
.returningResult(table.field("ID")) // Replace with your field name case
.fetchOne()
.into(long.class);
}
Run Code Online (Sandbox Code Playgroud)
这假设您正在使用生成的代码,其生成的Table实例实现Table.getIdentity(). 或者,如果您无法提供身份,您可以写:
long insert(@NonNull final Table<?> table,
@NonNull final Collection<Field<?>> columns,
@NonNull final Collection<Object> values) {
dslContext
.insertInto(table)
.columns(columns)
.values(values)
.execute();
return dslContext.lastID().longValue();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3093 次 |
| 最近记录: |