我想使用Spring JPA在单个数据库调用中基于以下ArrayList<>更新表中的多行。

CREATE TABLE phoneStatus (Status VARCHAR(1000) NOT NULL, Phone VARCHAR(100) NOT NULL)

[
    {
        "status": "Green",
        "phone": "2099028090"
    },
    {
        "status": "Red",
        "phone": "3099036070"
    }
]


方法查询-UPDATE phoneStatus SET status=?1 WHERE phone=?2

操作-list.foreach(object -> repo.method(x.getStatus(), x.getPhone());

由于多个数据库更新(〜150),这导致性能下降。

PS:如果我做错了,请更正我的措辞/问题。

编辑

对于那些询问如何将事务过帐到数据库的人,下面是Spring JPA标注。

@Transactional
@Modifying
@Query(value = "UPDATE phoneStatus SET status=?1 WHERE phone=?2", nativeQuery = true)
void updatePhoneStatus(String status, String phone);

最佳答案

听起来您正在使用spring-data-jpa?尝试将batch_size属性设置为合理的值。您还可以找到其他与批处理相关的配置,这些文档比我在这里可以写的更好。

spring.jpa.properties.hibernate.jdbc.batch_size=10

07-24 21:40