【问题标题】:Multiple Row Update using JPA query or native sql query in spring boot app在 Spring Boot 应用程序中使用 JPA 查询或本机 sql 查询进行多行更新
【发布时间】:2021-10-12 14:48:46
【问题描述】:

您好,我正在尝试在 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);

【问题讨论】:

  • 我认为你需要使用批量更新,你可以使用spring jdbc模板轻松完成

标签: java postgresql jpa spring-data-jpa jpa-2.1


【解决方案1】:

使用本机查询,您可以编写几行代码来循环遍历地图并生成类似于以下查询的内容。

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  

如果您打算一次更新数百条记录,我建议您考虑其他选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多