Java 将JSON映射到DTO
我有一个名为User的DTO,其中包含userFirstName、userLastName字段。我还有一个名为UserEntity的实体,其中包含id、userFirstName、userLastName字段。我的JSON负载中没有id字段,因为它将自动生成,那么JSON字段将如何映射到UserDTO。我也不能从UserDTO中删除id字段,因为我使用同一个UserDTO类来显示需要在JSON中显示id属性的用户列表。我如何在POST和GET请求类型中使用同一个UserDTO类,而在POST请求中,我们不在JSON正文和GET中发送id属性我们需要id属性的响应 我的实体类:Java 将JSON映射到DTO,java,spring,Java,Spring,我有一个名为User的DTO,其中包含userFirstName、userLastName字段。我还有一个名为UserEntity的实体,其中包含id、userFirstName、userLastName字段。我的JSON负载中没有id字段,因为它将自动生成,那么JSON字段将如何映射到UserDTO。我也不能从UserDTO中删除id字段,因为我使用同一个UserDTO类来显示需要在JSON中显示id属性的用户列表。我如何在POST和GET请求类型中使用同一个UserDTO类,而在POST请求
@Entity
@Table(name = "usr")
public class User implements Serializable {
public User() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "firstName")
private String userFirstName;
@Column(name = "lastName")
private String userLastName;
// fields with getters / setters for all the fields.
}
我的DTO课
公共类UserDTO{
private Long id;
private String userFirstName;
private String userLastName;
}
JSON POST请求:
{
"userFirstName":"testuserFirstName",
"userLastName":"testuserLastName",
}
这是我们对用户列表执行GET请求时希望看到的响应:
{
"id":1,
"userFirstName":"testuserFirstName",
"userLastName":"testuserLastName",
}
POST请求的控制器类方法中的代码段
UserDTO requestPayloadData = gson.fromJson(json, UserDTO.class);
任务实际上需要不同的对象
我认为您混淆了DTO(数据传输对象)和DO(数据对象)的概念,DTO将数据从业务逻辑传输到前端,DO(数据对象)用于持久化。因此您通常从不将DTO映射到DB列,这就是DOs的工作
另一个建议是,如果你想用相同的类完成任务
- 不要填充实体对象用户的id字段
您甚至可以删除用户实体中id字段的setter(如果ORM没有问题)GET没有正文。如何为GTE请求提供请求json?这是请求类型GET的json响应问题是什么?如何为POST和GET中所示的两个不同json使用相同的USERDTO?我已更新了问题@Jason。请检查我现在没有将DTO映射到DB列,因为我有alr我只是将JSON映射到DTO,然后使用modelmapper将DTO字段映射到实体以在database@Gitesh您正在使用相同的DTO..来显示一些用户列表..,正如您在问题陈述中提到的。@Gitesh在填充列表时使用不同的DO对象,表单Database@Gitesh增加了另一种方法我的答案是h。结帐。希望有帮助!。否则让我们讨论更多!如果你同意,我们可以在私人聊天中讨论??