如果名称和名称相同,默认情况下MapStruct将映射源和目标的所有属性。尽管我们可以在@Mapping中使用ignore属性来省略任何字段映射。但这不是我想要的。我想控制映射策略。我必须指定类似
@Mapper(STRATEGY=MAPPING_STRATEGY.SPECIFIED)
public interface EmployeeToEmployeeDTOMapper {
@Mappings({
@Mapping(target="id", source="id"),
@Mapping(target="name", source="name")
})
public EmployeeDTO employeeToEmployeeDTO (Employee emp);
}
Run Code Online (Sandbox Code Playgroud)
现在此映射仅用于将ID和名称从源映射到目标。除非在映射注释中指定,否则不应映射其他字段。
M. *_*tin 11
从 MapStruct 1.3 开始,@BeanMapping(ignoreByDefault = true)可以将注释添加到映射方法中以实现此结果:
public interface EmployeeToEmployeeDTOMapper {
@BeanMapping(ignoreByDefault = true)
@Mapping(target="id", source="id")
@Mapping(target="name", source="name")
EmployeeDTO employeeToEmployeeDTO(Employee emp);
}
Run Code Online (Sandbox Code Playgroud)
根据注释元素的JavadocignoreByDefault:
默认忽略所有映射。所有映射都必须手动定义。不会进行自动映射。对于缺失的目标属性,不会发出警告。
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |