我需要在Java Spring Boot应用程序(ProductDTO和Product)中合并对象。
ProductDTO并不包含Product中的所有字段,我只想映射两个对象中相同的字段,同时保留目标对象中的其他值。
我来自C#世界,所以我不知道在Java中实现相同行为的最佳方法是什么。在C#中,我会这样:
var project = new Project
{
Name = "Project 1",
Description = "Description"
};
var projectDto = new ProjectDTO
{
Name = "Project 1 (changed)"
};
Mapper.Map(projectDto, project);
执行Map方法后,项目对象仍包含“描述”字段的原始值。
在Java Spring中执行此操作的最佳方法是什么?
答案 0 :(得分:1)
spring bean库中有一个BeanUtils类。
BeanUtils.copyProperties(source, target);
只要您的类包含相同的属性名称,就会在目标中调用适当的setter。它将忽略目标中不存在的任何属性。
答案 1 :(得分:0)
对于您的情况,可以使用Apache或Spring bean utils来实现。
org.apache.commons.beanutils.BeanUtils.copyProperties(Object destination, Object source)
org.springframework.beans.BeanUtils.copyProperties(Object source, Object dest)
两种情况下参数的位置都不同。