我试图找出如何在插入时返回受影响的行,并从同一个查询中获取生成的键id
;
我有个疑问
@SqlUpdate("""
INSERT INTO table_name (
account,
state,
lock,
external_id
)
VALUES (
:account,
:state,
:lock,
:external_id)
""")
@GetGeneratedKeys("id")
Long insert(@BindBean ExampleBean exampleBean);
字符串
所以当我发现一个重复的条目时,我想将它更新为这样的内容
@SqlUpdate("""
INSERT INTO table_name (
account,
state,
lock,
external_id
)
VALUES (
:account,
:state,
:lock,
:external_id)
ON DUPLICATE KEY
UPDATE
external_id = :external_id
lock = :lock
""")
@GetGeneratedKeys("id")
idRows insert(@BindBean ExampleBean exampleBean);
public record idRows(Long id, int rowsAffected) {}
型
被称为做
try (Handle handle = jdbi.open()) {
return handle.attach(ExampleBean.class).upsert(exampleBean));
} catch (Exception e) {
log(example);
return null;
}
型
在我的Hikari数据库上,我设置了"useAffectedRows", true
我可以同时将受影响的行和生成的IDMap到我的记录,任何想法都将受到欢迎!
1条答案
按热度按时间velaa5lx1#
字符串
您的ID记录应该如下所示:
型
这样,当您调用upsert方法时,它应该返回一个identifier示例,其中包含生成的ID和受影响的行数。