我今天读到了关于ModelMapper的内容,它似乎非常有趣,但我不确定正确的用法。
我有一个像这样的Spring-Project: 我有我的模型类,这是序列化所必需的。我的REST控制器将DTO对象返回到前端。我的前端将DTO返回给我的控制器,然后我需要来自DTO的模型对象将其写入数据库。
我有一个人类,其属性如:char[][] bidimensionalMatrix = new char[n][n];
我希望modelmapper将此集合映射到属性:Set<Company> companies = new HashSet<Company>();
。第二个集合应通过调用companies.getName()来填充,而不是用整个对象填充Set。
我的问题:
Set<String> companies = new HashSet<String>()
转换为单个字符串。就像我只想要一家公司一样?对不起,我是ModelMapper的新手,我正在寻找使用spring在combinatino中序列化和反序列化期间映射的最佳方法。
答案 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来设置值。