在 Java 中,要将一个对象映射到另一个对象,通常使用以下几种方法之一:手动定义一个映射方法、使用第三方库例如 Dozer、MapStruct 或 ModelMapper
public class SourceObject {
private int id;
private String name;
// Getter and Setter methods
}
public class TargetObject {
private int id;
private String fullName;
// Getter and Setter methods
}
public class ObjectMapper {
public static TargetObject sourceToTarget(SourceObject source) {
TargetObject target = new TargetObject();
target.setId(source.getId());
target.setFullName(source.getName());
return target;
}
}
使用手动定义的映射方法示例:
public static void main(String[] args) {
SourceObject source = new SourceObject();
source.setId(1);
source.setName("John Doe");
TargetObject target = ObjectMapper.sourceToTarget(source);
System.out.println("ID: " + target.getId() + ", Full Name: " + target.getFullName());
}
Dozer:
首先,将 Dozer 依赖添加到项目中。如果使用 Maven,在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-core</artifactId>
<version>6.4.1</version>
</dependency>
然后,定义一个映射接口:
import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
public class DozerExample {
public static void main(String[] args) {
SourceObject source = new SourceObject();
source.setId(1);
source.setName("John Doe");
Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
TargetObject target = mapper.map(source, TargetObject.class);
System.out.println("ID: " + target.getId() + ", Full Name: " + target.getFullName());
}
}
MapStruct:
首先,将 MapStruct 依赖添加到项目中。如果使用 Maven,在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
<scope>provided</scope>
</dependency>
然后,定义一个映射接口:
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface SourceTargetMapper {
SourceTargetMapper INSTANCE = Mappers.getMapper(SourceTargetMapper.class);
@Mapping(source = "name", target = "fullName")
TargetObject sourceToTarget(SourceObject source);
}
使用 MapStruct 示例:
public class MapStructExample {
public static void main(String[] args) {
SourceObject source = new SourceObject();
source.setId(1);
source.setName("John Doe");
TargetObject target = SourceTargetMapper.INSTANCE.sourceToTarget(source);
System.out.println("ID: " + target.getId() + ", Full Name: " + target.getFullName());
}
}
这些方法和库能够让你的对象从一个类型映射到另一个类型,从而实现抽象和简化数据处理。
领取专属 10元无门槛券
手把手带您无忧上云