Spring REST API 從實體到 DTO 的轉換

介紹

在本文中,我們將處理 Spring 應用的內部實體與客戶端外的 DTO(數據傳輸對象)之間需要進行的轉換。

模型映射

讓我們從介紹用於執行的實體到 DTO 轉換的主庫開始 —— ModelMapper。 我們需要將在 pom.xml 中添加如下依賴:

Spring REST API 從實體到 DTO 的轉換

然後,我們在 Spring 配置中定義 ModelMapper bean:

Spring REST API 從實體到 DTO 的轉換

DTO

接下來,讓我們來介紹這個雙面問題的 DTO 方面 —— Post DTO:

Spring REST API 從實體到 DTO 的轉換

注意,兩個自定義日期相關方法,處理客戶端和服務器之間的日期來回轉換:

  • getSubmissionDateConverted() 方法將Date字符串轉換為服務器時區中的日期,以在持久化 Post 實體中使用它
  • setSubmissionDate() 方法用於將 DTO 的日期設置為當前用戶時區中的 Post 的 Date

Service

現在讓我們看看一個 Service 層的操作 —— 顯然它將與實體(而不是DTO)一起工作:

Spring REST API 從實體到 DTO 的轉換

我們接下來將看到服務的上層 —— Controller 層,這也是轉換實際發生的地方。

Controller

現在讓我們看看一個標準的 Controller 實現,為 Post 公開簡單的 REST API。

我們將在這裡展示幾個簡單的 CRUD 操作:創建、更新、獲取一個和獲取全部。

Spring REST API 從實體到 DTO 的轉換

這是我們從 Post 實體到 PostDto 的轉換:

Spring REST API 從實體到 DTO 的轉換

這是從DTO到實體的轉換:

Spring REST API 從實體到 DTO 的轉換

因此,正如您所看到的,在模型映射的幫助下, 轉換邏輯快速而簡單 —— 我們使用映射的 map API,無需編寫任何轉換邏輯就可以獲得轉換後的數據。

單元測試

最後,讓我們做一個非常簡單的測試,以確保實體和 DTO 之間的轉換工作正常:

Spring REST API 從實體到 DTO 的轉換

總結

這是一篇關於在 Spring REST API 中簡化從實體到 DTO 和從 DTO 到實體的轉換的文章,方法是使用模型映射庫,而不是手工編寫這些轉換。


分享到:


相關文章: