【发布时间】:2021-10-07 18:54:09
【问题描述】:
我有一个包含以下字段的客户表:ID、姓名、年龄、电话号码、内容、地址。
姓名+年龄+电话号码是唯一的。
我有一个带有请求正文的 upsert POST API:
[
{
"name": "A",
"age": 100,
"phoneNumber": 1000,
"content": "content",
"address": "address"
}, ...
]
我的要求在这里检查姓名+年龄+电话号码是否存在,进行客户更新。如果没有,请进行客户插入。 我的解决方案是:循环请求列表-> 根据姓名+年龄+电话号码检查数据库以分为 2 个列表:insertList 和 updateList。之后在每个列表上使用 saveAll()。
但是如果列表有 1000 条记录,我需要点击 DB 1000 次才能分离。我认为我的解决方案不好,那么您有其他性能更好的解决方案吗?我正在使用 java 8 和 oracle DB。
【问题讨论】:
-
你应该可以在 Oracle 中做一个MERGE
-
@g00se 你有这个动作的语法吗?我只知道:repo.save()、repo.saveAll() 和 repo.saveAndFlush()
-
你提到了oracle和java。如果您使用的是一些中间软件,那么它是不相关的