java关于上传数据列表的问题解决方案
我有一个包含以下字段的客户表:ID、姓名、年龄、电话号码、内容、地址
姓名+年龄+电话号码是唯一的
我有一个带有请求主体的upsert POST API:
[
{
"name": "A",
"age": 100,
"phoneNumber": 1000,
"content": "content",
"address": "address"
}, ...
]
我的要求是检查姓名+年龄+电话号码是否存在,并进行客户更新。如果没有,请进行客户插入。 我的解决方案是:循环请求列表->;根据姓名+年龄+电话号码检查数据库,将其分为两个列表:insertList和updateList。然后在每个列表上使用saveAll()
但是如果列表中有1000条记录,我需要点击DB 1000次来分离。我认为我的解决方案不好,那么您是否有其他性能更好的解决方案?我正在使用Java8和oracle数据库
# 1 楼答案
我不会说Java,但我有一个建议
在数据库中创建一个新表(包含您提到的所有列——名称、年龄等)(我们称之为
list_table
)并将这1000条记录存储在那里。正如我所说,我不懂Java,所以我不知道它实际需要做多少工作,但我认为它不应该太复杂完成后,切换到SQL并使用
merge
语句,该语句将在无时间中对目标表执行向上插入:# 2 楼答案
据我所知,您不想点击DB1000次来检查是否需要插入或更新。一种方法是,遍历您的请求,收集列表中的所有name+age+phNumber,现在完成后,用列表点击db一次,找出要插入的数量和要更新的数量