java - 在 Spring Boot 应用程序中使用 JPA 查询或本机 sql 查询进行多行更新
问题描述
您好我正在尝试在 Spring Boot 应用程序中使用单个查询来更新多行。我有一个映射,其中键返回行的 id,值是要为该键更新的值。一个键要更新的值是不同的。
我无法使用该 Map 形成查询来更新多行。附上了一个伪代码。我正在使用 PostgresSQL 12.1
Map<String,String> a;
@Query("UPDATE tableName set columnA=:valueList where columnB=:keyList",nativeQuery=true)
public void updateQ(List<String> keyList, List<String> valueList);
解决方案
使用本机查询,您可以编写几行代码来循环遍历地图并生成类似于以下查询的内容。
UPDATE
TABLE_NAME
SET
TABLE_NAME.VALUE_COLUMN = table2.valueColumn
FROM
TABLE_NAME table1
INNER JOIN
(select * FROM (VALUES ('key1','value1'),('key2','value2'),('key3','value3')) as staticTable (keyColumn , valueColumn)) table2
ON
table1.KEY_COLUMN = table2.keyColumn
不过,如果您计划一次更新数百条记录,我建议您考虑其他选项。
推荐阅读
- c# - 从 Json 中获取数据并在 Combobox 中显示
- amazon-dynamodb - DynamoDB 有条件地更新多个项目
- java - 基于来自客户端 Java 的 QName 转发 SOAP 请求
- mysql - 安排未执行的事件
- html - 以毫秒为单位用 url 抓取网页 Unix
- ios - 滑动操作不适用于部分标题
- java - 在 Java 中创建具有给定数量参数的子类构造函数
- javascript - React 应用程序未从 Express 服务器接收 res.data (JSON),尽管 Postman 接收
- python - RegEx 无法在循环中捕获组
- makefile - 了解使用 Make 执行的 shell 命令/配方