当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot Restful中更改大量数据(更新多个数据)

全冥夜
2023-03-14
[I want this function to work, i.e. change a lot of data at once][1]

我想一次更改大量数据,如何更改?

在这个DAO下只更改一个数据,如果我想更改很多怎么办?

    @PutMapping("/roomstatus/update/{id}")
public ResponseEntity<RoomStatus> updatRoomStatus(@PathVariable(value="id") Integer empid,@Valid @RequestBody RoomStatus RsDetails){

    RoomStatus emp=roomStatusDAO.findOne(empid);
    if(emp==null) {
        return ResponseEntity.notFound().build();
    }

    emp.setRoomNumber(RsDetails.getRoomNumber());
    emp.setFloor(RsDetails.getFloor());
    emp.setGuestName(RsDetails.getGuestName());
    emp.setRoomType(RsDetails.getRoomType());
    emp.setBedType(RsDetails.getBedType());
    emp.setRoomStatus(RsDetails.getRoomStatus());
    emp.setConditions(RsDetails.getConditions());

    RoomStatus updateRoomStatus=roomStatusDAO.save(emp);
    return ResponseEntity.ok().body(updateRoomStatus);                      
}

共有3个答案

蔚桐
2023-03-14

如果要完全更新资源,请使用PutMapping部分更新。请在此处查看以供参考。

韦业
2023-03-14

使用ModelMapper可以更改许多数据检查链接

https://www.appsdeveloperblog.com/java-objects-mapping-with-modelmapper/

或者

https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application

桓宜
2023-03-14

最简单的解决方案是传递为@Request estbodyRoomstatus集合。

@PatchMapping("/roomstatus/update")
public ResponseEntity<RoomStatus> updatRoomsStatus(@Valid @RequestBody List<RoomStatus> rsDetails){
  List<RoomStatus> updated = rsDetails.stream().map(rs -> updateRoomStatus(rs)).collect(Collectors.toList());
  return ResponseEntity.ok().body(updated);
}

private RoomStatus updateRoomStatus(RoomStatus emp) {
  if(emp==null) {
    return ResponseEntity.notFound().build();
  }
  emp.setRoomNumber(RsDetails.getRoomNumber());
  emp.setFloor(RsDetails.getFloor());
  emp.setGuestName(RsDetails.getGuestName());
  emp.setRoomType(RsDetails.getRoomType());
  emp.setBedType(RsDetails.getBedType());
  emp.setRoomStatus(RsDetails.getRoomStatus());
  emp.setConditions(RsDetails.getConditions());
  return roomStatusDAO.save(emp);
}

但是要小心创建的堆大小-所有对象都可能非常重。
请注意这个问题-List上传递的对象将不会被验证,因此您可以遵循这些答案。

如果对每个对象的修改都是相同的,那么只需要从RequestBody中获取包含od ID和修改列表的自定义对象即可。然后从spring数据调用自定义JPQL查询,该查询调用DB一次,而不是进行n次调用。

 类似资料:
  • UserViewModel: 用户存储库:

  • 这个问题可能已经得到了回答,我读过很多类似的,但对我不起作用。因此,我的具有扩展的自定义表模型。我的数据是和列名。那么,当我的数据发生更改时,如何更新表呢?我一直在使用,它正在工作,但它将我的自定义单元格呈现器重置为默认值。谢了。

  • 我正在开发一个web应用程序,使用React跟踪水果供应商的库存。js,MongoDB,Node。js和Express。我调用了数据库endpoint来呈现表中的数据。现在,我尝试使用按钮增加和减少库存量,但当我尝试设置新状态时,它不起作用。我尝试通过单击更改状态,然后更新数据库中的新状态。有什么建议吗? > 可结果成分: 从'react'导入Reac,{Component};从“react bo

  • 问题内容: 我看到这对笨论坛 考虑以下代码 这显然是您在Codeigniter中这样做的方式 实际上这是行不通的。我看了一下生成的SQL,结果甚至没有提到联接。 有谁知道如何使用Codeigniter的Active Record数据库类对联接进行更新? 问题答案: 我发现的一种解决方案是完全删除联接并将联接条件移到“ where”函数中,此外,您还需要更改更新字符串以包括新表。

  • RecycerView只显示创建时ArrayList(适配器的数据)中的项。我所有添加更多行的尝试似乎都奏效了,但列表仍然是初始数据。它不是重复的,因为我尝试了谷歌上找到的所有建议。我已经做了什么: Adapter.NotifyDataSetChanged(); Adapter.NotifyItemChanged(5); recyleList.invalidate(); recyclelist.s

  • 如何使用数据砖增量从其他表中更新表中的多个记录。 我想达到这样的目标: 它失败并出现错误:不匹配的输入“发件人”期望