通常,对象映射器用于将较大的数据集映射到较小的数据集(例如:
Entity
对象有很多数据,但我们只想返回其中的一些数据)。
对象映射器通常会创建一个新的小集合目标对象实例,并从大集合的源对象中设置所需的字段,但我有相反的场景:我有一个目标对象已经包含一些数据,现在我需要将一个新的小数据集的源对象映射到目标对象中。
源类
public class SrcObj {
private String name;
private int i;
目标类
public class DestObj {
private String name;
private int i;
private float f;
private boolean b;
DESOBJ已经包含int i和浮点f的值,SrCObJ有字符串名和int,我需要在不丢失现有数据的情况下保存SRCOBJ数据到StestObj.
模型映射器总是创建destobj的新对象,该对象将srcobj映射到destobj中,但其余字段为空。
public class ObjectMapper {
public static void main(String[] args) {
SrcObj src = new SrcObj("src name", 1);
DestObj dest = new DestObj(null, 0, 1, true);
ModelMapper modelMapper = ObjectMapper.modelMapper();
dest = modelMapper.map(src, DestObj.class);
System.out.println(dest);
}
private static ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
PropertyMap<SrcObj, DestObj> orderMap = new PropertyMap<SrcObj, DestObj>() {
protected void configure() {
// map().setI(destination.getI());
map().setI(source.getI());
System.out.println("model mapper");
map().setName(source.getName());
}
};
modelMapper.addMappings(orderMap);
return modelMapper;
}
}
模型映射器中有一个使用目标的选项,上面有注释,但它不起作用。
如何使destobj包含所有值
destobj[name=“src name”,i=1,f=1.1,b=true]