【问题标题】:Spring bulk update fields with id's matching the given list具有与给定列表匹配的 id 的 Spring 批量更新字段
【发布时间】:2019-05-17 10:25:57
【问题描述】:

我需要根据提供的 id 在我的数据库中进行多次更新。现在我正在迭代 id 列表并一次又一次地调用我的存储库的更新函数。但这效率不高。我想知道是否有是一种我可以通过将 id 列表和另一个新字段值列表作为参数传递来在一次休息调用中进行批量更新的方法。在此先感谢您的帮助。

现在我一次又一次地调用这个方法来更新值。然而这根本没有效率:

 @Transactional
    @Modifying
    @Query("UPDATE Student c SET c.rollNo= :rollNo WHERE c.id = :id")
    void updateStudentRollNo(@Param("id") long id, @Param("rollNo") String rollNo);

【问题讨论】:

  • 之类的? @Query("UPDATE Student c SET c.rollNo= :rollNo WHERE c.id in :ids") void updateStudentRollNo(@Param("ids") List<Long> ids, @Param("rollNo") String rollNo);
  • @AlanHay 卷号也在列表中

标签: sql spring spring-boot spring-data-jpa


【解决方案1】:

如果您有 Student 实体,您可以在其中调用方法 updateStudentRollNo,您可以调用 repository.saveAll(students) ,这将在列表中进行更新。您尝试的方式是不可能的,因为每个学生都有不同的rollNo,所以无法进行这样的批量更新。

【讨论】:

  • 但是学生实体也有其他属性。所以用 roll no 保存所有对我不起作用。
  • 所以你正在做最好的方法,遍历列表并调用 updateStudentRollNo。
猜你喜欢
  • 1970-01-01
  • 2014-02-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多