如何将一个对象的特定字段映射到另一个对象?

时间:2018-08-23 07:37:30

标签: java spring spring-boot microservices

我遇到的情况是我有一个对象(obj1)必须映射到另一个对象(obj2),但是在此Mapping中,某些obj2的字段已经具有一些值,而其他字段为null,所以我必须选择仅在obj2中为空的那些字段,然后将数据从obj1发送到那些字段。我不确定在这种情况下ModelMapper是否有用。

谢谢。

4 个答案:

答案 0 :(得分:1)

可以使用Apache commons library

将一个bean复制到另一个bean

对于直接对象到对象的复制,您可以使用

  

copyProperties(Object dest,Object orig)

您可以使用单个副本

  

setProperty(对象bean,字符串名称,对象值)

这是我在项目中使用过的替代解决方案

答案 1 :(得分:1)

根据需要,您可以自己编写一个简单的映射器(使用Java反射API来减少样板),也可以使用Dozer

之类的工具。

答案 2 :(得分:0)

我推荐mapstruct(更快的类型安全和易于理解的)。 Java反射库太慢,并且Java的执行时间可能会引发Error。

http://mapstruct.org

答案 3 :(得分:0)

您可以使用ModelMapper。该库用于执行此实体-DTO转换。

  1. 添加以下行家依赖:
<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>0.7.4</version>
</dependency>
  1. 自动连接ModelMapper-
@Bean
public ModelMapper modelMapper() {
    return new ModelMapper();
}
  1. 将DTO转换为实体的示例代码:
private Employee convertToDto(EmployeeDto employeeDto) {
    Employee employee = modelMapper.map(employeeDto, Employee.class);
    return employee;
}