[英]Mapping JSON to DTO
我有一個名為 User 的 DTO,其中包含 userFirstName,userLastName 字段。此外,我還有一個名為 UserEntity 的實體,其中包含字段 id、userFirstName、userLastName。我的 JSON 有效負載中沒有 id 字段,因為它將自動生成,那么如何JSON 字段映射到 UserDTO。我也無法從 UserDTO 中刪除 id 字段,因為我使用相同的 userDTO 類來顯示需要在 JSON 中顯示 id 屬性的用戶列表。如何使用相同的 USERDTO 類對於 POST 和 GET 請求類型,在 POST 請求中,我們不在 JSON 正文中發送 id 屬性,而在 GET 響應中,我們需要 id 屬性我的實體類:
@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);
You actually need different objects for the task
我認為您混淆了 DTO(數據傳輸對象)的概念,它將數據從您的業務邏輯傳輸到前端,而 DO(數據對象)則用於持久化。 所以你通常不會將 DTO 映射到 DB 列,這是 DO 的工作
另一個建議,如果你想用相同的班級完成任務。
當您將數據從 UserDTO 復制到 User 實體時,跳過id字段
您甚至可以刪除 User 實體中提交的id的setter (如果 ORM 沒有問題)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.