Java 如何在Spring Boot Restful中更改大量数据(更新多个数据)
我想一次更改大量数据,如何更改 在这个DAO下只改变一个数据,如果我想改变很多怎么办 使用ModelMapper,您可以更改许多数据检查链接 或 使用ModelMapper,您可以更改许多数据检查链接 或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集合传
如果要完全更新资源,请使用@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