我正在使用 mapstruct,我想知道是否有任何方法可以为某些目标属性设置 null 值。例如,
public class MySource {
private String prop1;
private String prop2;
public MySource() {
// Initialization.
}
// Getters - Setters.
}
public class MySourceDto {
private String prop1;
private String prop2;
public MySourceDto() {
// Initialization.
}
// Getters - Setters.
}
@Mapper
public interface MySourceMapper {
@Mappings({
@Mapping(target = "prop1", propertyToSetNull = null)})
public MySourceDto toView(MySource mySource);
}
我希望使用上面的源代码、dto 和映射器来生成下面的源代码,
@Component
public class MySourceMapperImpl implements MySourceMapper {
@Override
public MySourceDto toView(MySource mySource) {
if ( mySource == null ) {
return null;
}
MySourceDto mySourceDto = new MySourceDto();
mySourceDto.setProp1( mySource.getId() );
mySourceDto.setProp2( null );
return mySourceDto;
}
}
您可以使用@Mapping(target = "prop1", expression = "java(null)")
为了实现这一点。
您可以在参考指南中找到有关表达的更多信息here.
目前仅支持 java 作为表达式语言,MapStruct 只会将您在括号内编写的内容直接应用于 setter,实现将与您的示例中的完全相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)