0

我今天阅读了有关 ModelMapper 的信息,它似乎很有趣,但我不确定正确的用法。

我有一个这样的 Spring-Project:我有序列化所必需的模型类。我的 REST 控制器将 DTO 对象返回到前端。我的前端将 DTO 返回到我的控制器,然后我需要来自 DTO 的模型对象将其写入数据库。

我有一个具有如下属性的人员类:Set<Company> companies = new HashSet<Company>();

我希望模型映射器将此集合映射到一个属性:Set<String> companies = new HashSet<String>()。第二个集合应通过调用 company.getName() 来填充,而不是用整个对象填充 Set。

我的问题:

  1. 我需要 PropertyMap 还是转换器?
  2. 我该怎么做?
  3. 是否可以说从Set<Companies>转换为单个字符串。就像我只想要一家公司一样?

抱歉,我对 ModelMapper 很陌生,我正在寻找在结合 spring 的序列化和反序列化期间映射的最佳方法。

4

1 回答 1

0

如果 dto 和 bean 中的字段名称相同,那么我们可以使用 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 方法(就像我们的例子中的公司一样)。它使用反射并调用 getter 和 setter 来设置值。

于 2016-02-29T20:27:05.803 回答