2016-02-29 27 views
0

今天我讀到了關於ModelMapper的內容,它似乎很有趣,但我不確定正確的用法。帶有集合和JPA的Modelmapper

我有一個像這樣的Spring項目: 我有我的模型類是序列化所必需的。我的REST控制器將DTO對象返回到前端。我的前端將DTO返回到我的控制器,然後我需要從DTO中創建模型對象,將它寫入數據庫。

我有了像一個屬性的類人:Set<Company> companies = new HashSet<Company>();

我想modelmapper將它設置爲一個屬性映射:Set<String> companies = new HashSet<String>() .The第二組應通過調用companies.getName(填寫),而不是填充設置整個對象。

我的問題:

  1. 我需要一個屬性映射或轉換?
  2. 我該如何做到這一點?
  3. 是否可以說從Set<Companies>轉換爲單個字符串。就像我只想要一家公司?

對不起,我很新的ModelMapper和我在尋找過程中序列化和反序列化在combinatino彈簧映射的最佳途徑。

回答

0

如果字段的名稱是在這兩個DTO和豆腐,然後我們可以使用Spring的BeanUtils類的對象轉換相同,如下圖所示:

private UserDto toDto(User user) { 
    UserDto dto = new UserDto(); 
    BeanUtils.copyProperties(user, dto, new String[]{"companies"}); 
    if (user.getCompanies() != null) { 
     //Iterate the list and set the company names 
    } 
    return dto; 
} 

BeanUtils屬於org.springframework.beans包,以便不需要依賴。如果我們想要自己處理這些屬性,我們可以傳遞屬性數組作爲copyProperties方法中的參數(如我們的案例中的公司)。它使用Reflections並調用getters和setter來設置值。

+0

BeanUtils和ModelMapper之間的區別除了附加的依賴關係嗎? 所以我需要寫我自己的匹配方法。我特別需要幫助反序列化。所以當我有一個公司名稱(字符串)將其轉換回公司對象。 – Andy

+0

我們如何將公司名稱轉換爲公司對象?它需要數據庫調用嗎? –

+0

我沒有得到你的問題是對不起... 我想稍後將我的人員對象保存到數據庫。爲此,我需要和我的模型一樣的結構。我想用公司列表(表公司)將完整的人員對象(表格:人員)寫入數據庫。 在這種情況下,我不能寫我的DTO數據庫,因爲它沒有公司屬性。 – Andy