2016-02-29 28 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