Как отобразить только указанные поля, используя mapStruct?
MapStruct отображает все свойства источника и назначения по умолчанию, если они имеют одинаковые имена. Хотя мы можем использовать свойство ignore в @Mapping для пропуска любого отображения поля. Но это не я хочу. Я хочу контролировать стратегию картирования. Я должен указать что-то вроде
@Mapper(STRATEGY=MAPPING_STRATEGY.SPECIFIED)
public interface EmployeeToEmployeeDTOMapper {
@Mappings({
@Mapping(target="id", source="id"),
@Mapping(target="name", source="name")
})
public EmployeeDTO employeeToEmployeeDTO (Employee emp);
}
Теперь это отображение предназначено только для отображения идентификатора и имени из источника в место назначения. Никакие другие поля не должны отображаться, если это не указано в аннотации отображений.
2 ответа
То, что вы ищете, является запросом функции в # 1392. Существует ожидающий PR, поэтому он будет доступен для использования в следующей версии (1.3.0). Окончательный API еще не определен. Следите за выпуском и пиаром, который будет уведомлен, когда это будет сделано
Начиная с 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);
}
За в Javadocs из
ignoreByDefault
элемент аннотации:
По умолчанию все сопоставления игнорируются. Все сопоставления необходимо определять вручную. Никакого автоматического сопоставления не будет. При отсутствии целевых свойств предупреждений не будет.