我对Spring非常陌生。几个疑问:
DOUBT1:
class UserDTO {
long id;
String name;
int age;
// getters and setters
}CASE1:
public void doSomethng(@RequestBody UserDTO userDTO){
repository.findById(userDTO.getId());
}CASE2:
public void doSomethng(@RequestBody long id){ //Is this correct?
repository.findById(id);
}CASE3:
public void doSomethng(@RequestBody Map<Long, Object> map){ //Is this correct?
repository.findById(map.get("id"));
}实际上我只需要为POST请求传递"id“.
那么,在以上三个案例中,哪个是好的做法呢?对我来说长时间的证明似乎是合理的。我不明白,在哪些情况下,将Map作为RequestBody传递比DTO?要好得多
DOUBT2:
我目前正在使用DTO作为BiDirectional。所以,使用双向DTO是正确的吗?我会面临以下DTO设计的任何问题吗?
class UserDTO {
long id;
List<OrderDTO> orders;
}
class OrderDTO {
long orderId;
UserDTO userDTO;
}发布于 2020-04-25 04:43:33
那么,在以上三个案例中,哪个是好的做法呢?对我来说长时间的证明似乎是合理的。我不明白,在哪些情况下,将Map作为RequestBody传递要比DTO好得多?
对于上述情况,由于您只需要id字段,并且希望在其基础上执行搜索,我的建议是对其使用@PathVariable。见下面的例子:
@GetMapping(value="find/{id}")
public void find(@PathVariable Long id) {
repository.findById(map.get("id"));
}此外,对于微不足道的有效负载,应该考虑Map。如果负载有一个复杂的结构,有许多嵌套的JSON对象,那么应该使用DTO。
我目前正在使用DTO作为BiDirectional。所以,对DTO使用双向技术是正确的吗?我是否会面临以下DTO设计的任何问题?
我不认为使用双向DTO有什么问题,因为它们只是在应用程序中转换请求/响应数据的一种方法。如果它们是双向实体,则会出现问题w.r.t序列化。
希望这能有所帮助!
https://stackoverflow.com/questions/61418300
复制相似问题