如何使用 mapstruct 仅映射选定的字段
How to map only selected fields using mapstruct
如何使用 mapStruct 和 return thenm 仅映射选定的字段作为响应。
例如:
class Location {
String street;
String unit;
int postCode;
}
public class Car {
private Location location;.
}
public class CarDto {
private Location location;
}
现在我可以使用 :
映射它们
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
CarDto returnObject = CarDto carToCarDto(Car car);
}
现在,returnObject
将包含具有 street, unit and postCode
.
的位置
但是,我只想公开 street and postCode
和 returnObject.location。
如何才能只公开那些选定的字段?
像这样更改您的 CarD:
public class CarDto {
String street;
int postCode;
}
在你的映射器中:
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
@Mapping(source = "location.street", target = "street")
@Mapping(source = "location.postCode", target = "postCode")
CarDto returnObject = CarDto carToCarDto(Car car);
}
如果你想忽略目标对象中的某些字段,只需简单地在 MapStruct @Mapping
注释中指出它,如下所示:
@Mapping(target = "location.postCode", ignore = true)
CarDto carToCarDto(Car car);
当您只想映射某些字段而忽略其他所有内容时,您可以使用 BeanMapping#ignoreByDefault
.
例如
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
@BeanMapping(ignoreByDefault = true)
@Mapping(target = "street", source = "location.street")
@Mapping(target = "postCode", source = "location.postCode")
CarDto carToCarDto(Car car);
}
通过使用 @BeanMapping(ignoreByDefault = true)
,您将忽略所有属性。通过使用 @Mapping
,您可以定义要映射的属性。
如何使用 mapStruct 和 return thenm 仅映射选定的字段作为响应。
例如:
class Location {
String street;
String unit;
int postCode;
}
public class Car {
private Location location;.
}
public class CarDto {
private Location location;
}
现在我可以使用 :
映射它们@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
CarDto returnObject = CarDto carToCarDto(Car car);
}
现在,returnObject
将包含具有 street, unit and postCode
.
但是,我只想公开 street and postCode
和 returnObject.location。
如何才能只公开那些选定的字段?
像这样更改您的 CarD:
public class CarDto {
String street;
int postCode;
}
在你的映射器中:
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
@Mapping(source = "location.street", target = "street")
@Mapping(source = "location.postCode", target = "postCode")
CarDto returnObject = CarDto carToCarDto(Car car);
}
如果你想忽略目标对象中的某些字段,只需简单地在 MapStruct @Mapping
注释中指出它,如下所示:
@Mapping(target = "location.postCode", ignore = true)
CarDto carToCarDto(Car car);
当您只想映射某些字段而忽略其他所有内容时,您可以使用 BeanMapping#ignoreByDefault
.
例如
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
@BeanMapping(ignoreByDefault = true)
@Mapping(target = "street", source = "location.street")
@Mapping(target = "postCode", source = "location.postCode")
CarDto carToCarDto(Car car);
}
通过使用 @BeanMapping(ignoreByDefault = true)
,您将忽略所有属性。通过使用 @Mapping
,您可以定义要映射的属性。