我想使用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