首页 > 解决方案 > 我应该如何通过spring boot编写批量更新方法

问题描述

这是我需要通过 DTO 列表更新 mysql 表的方法,我一个一个地更新它们,这是我的代码:

@Override  
  @Transactional  
  public void updateCustomCategory(List<ItemDto> itemDtoList) {  
    if (CollectionUtils.isNotEmpty(itemDtoList)) {  
      for (ItemDto itemDto : itemDtoList) {  
        Long l1CustomCategoryId = itemDto.getL1CustomCatId();  
        Long l2CustomCategoyId = itemDto.getL2CustomCatId();  
        StringBuilder query =
                new StringBuilder(
                        "update ItemDto item set item.l1CustomCategoryId = :l1CustomCategoryId and item.l2CustomCategoryId = :l2CustomCategoyId where itemId = :itemId");  
        Query q = this.em.createQuery(query.toString());  
        q.setParameter("l1CustomCategoryId", l1CustomCategoryId);  
        q.setParameter("l2CustomCategoyId", l2CustomCategoyId);  
        q.setParameter("itemId", itemDto.getItemId());  
        q.executeUpdate();  
      }
    }
  }

如果数据量很大,我想将其修改为批量更新以保持性能良好,该怎么办?

标签: javaspringspring-bootspring-data-jpa

解决方案


推荐阅读