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

Java 如何在Spring Boot Restful中更改大量数据(更新多个数据),java,rest,api,spring-boot,web-services,Java,Rest,Api,Spring Boot,Web Services,我想一次更改大量数据,如何更改 在这个DAO下只改变一个数据,如果我想改变很多怎么办 使用ModelMapper,您可以更改许多数据检查链接 或 使用ModelMapper,您可以更改许多数据检查链接 或 如果要完全更新资源,请使用@PutMapping进行部分更新,请使用@PatchMapping。供参考检查 如果要完全更新资源,请使用@PutMapping进行部分更新,并使用@PatchMapping。供参考检查 最简单的解决方案是作为@RequestBody RoomStatus集合传

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

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

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

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


如果要完全更新资源,请使用@PutMapping进行部分更新,请使用@PatchMapping。供参考检查

如果要完全更新资源,请使用@PutMapping进行部分更新,并使用@PatchMapping。供参考检查

最简单的解决方案是作为@RequestBody RoomStatus集合传递

    @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);                      
}
但是要注意创建的堆大小——所有对象都可能非常重。 请注意-列表中传递的对象将不会被验证,所以您可以按照这些答案进行操作


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

最简单的解决方案是作为@RequestBody RoomStatus集合传递

    @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);                      
}
但是要注意创建的堆大小——所有对象都可能非常重。 请注意-列表中传递的对象将不会被验证,所以您可以按照这些答案进行操作


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

首先,你的问题不够具体,表达得不够好

但据我所知,empId是employeeId。员工本身与RoomStatus有一对多的关系。您的方法获取employeeId和roomStatusDetails,对于与employeeId关联的每个RoomStatus,您希望设置roomStatusDetails。在这种情况下,您可以执行以下操作。 首先,在roomStatusDAO接口中添加一个方法,通过empId:findAllByEmpIdInteger empId获取RoomStatus集合,并在相应的类中提供其实现。 然后,解决方案如下所示:

@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);
}

首先,你的问题不具体,表述得不够好

但据我所知,empId是employeeId。员工本身与RoomStatus有一对多的关系。您的方法获取employeeId和roomStatusDetails,对于与employeeId关联的每个RoomStatus,您希望设置roomStatusDetails。在这种情况下,您可以执行以下操作。 首先,在roomStatusDAO接口中添加一个方法,通过empId:findAllByEmpIdInteger empId获取RoomStatus集合,并在相应的类中提供其实现。 然后,解决方案如下所示:

@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);
}
使用@PatchMappinguse@PatchMapping