带有Collection和JPA的Modelmapper

时间:2016-02-29 20:15:47

标签: java spring jpa modelmapper

我今天读到了关于ModelMapper的内容,它似乎非常有趣,但我不确定正确的用法。

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

我有一个人类,其属性如:char[][] bidimensionalMatrix = new char[n][n];

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

我的问题:

  1. 我需要PropertyMap还是转换器?
  2. 我该怎么做?
  3. 是否可以说从Set<String> companies = new HashSet<String>()转换为单个字符串。就像我只想要一家公司一样?
  4. 对不起,我是ModelMapper的新手,我正在寻找使用spring在combinatino中序列化和反序列化期间映射的最佳方法。

1 个答案:

答案 0 :(得分: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方法中的参数(就像我们公司中的公司一样)。它使用Reflections并调用getter和setter来设置值。