如何修改为批量更新的方式

spring boot jpa的开发框架,现在更新数据库这块遇到了性能问题,原始方法如下,求助如何修改下面的方法呢?

相关代码

@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();  
      }
    }
  }
阅读 3.8k
1 个回答

看代码是一个item执行一条sql,也就是说1000个item就执行1000个sql,建议批量更新,不知道你的this.em有没有相关接口?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题