我有员工对象列表 - 列表 我需要将其转换为员工转移对象列表 - 列表
假设一个字段"密码"存在于两个类中。
示例代码段:
List<Employee> employees = employeeRepository.findAll();
// Define the target type
Type targetListType = new TypeToken<List<EmployeeDTO>>() {}.getType();
List<EmployeeDTO> employeeDTOs = modelMapper.map(employees, targetListType);
请告诉我如何跳过映射/复制字段。
答案 0 :(得分:5)
查看条件映射的官方user manual。
您需要添加新的Mapping并使用Condition。你的来源和说法将是:
首先创建并自定义您的条件。它会是这样的:
Condition<?, ?> isNotZero = new Condition<PersonDTO, Employee>() {
public boolean applies(MappingContext<PersonDTO, Employee> context) {
//Your conidition
return context.getSource().getEmployeeId() != 0;
}
};
然后添加Mapping并使用条件:
modelMapper.addMappings(new PropertyMap<PersonDTO, Person>() {
protected void configure() {
when(isNotZero).map(source).setEmployee(null);
}
});
您可以在ModelMapper GitHub存储库中找到此示例。作者已经做了很多,并且得到了很好的解释:
答案 1 :(得分:0)
这是我在映射阶段跳过字段的方式:
ModelMapper modelMapper = new ModelMapper();
modelMapper.typeMap(EmployeeDTO.class,Employee.class).addMappings(mapper -> {
mapper.skip(Employee::setPassword);
});