MapStruct @Mapping(表达式="java(...)")
MapStruct @Mapping(expression="java(...)")
是否可以在
中使用 if-else 或三元运算符之类的条件
@Mapping(expression="java(...)")
我有一个方法 returns ArrayList 的最后一项,但如果列表为空,它 returns null。我需要一个条件,所以如果我收到我可以使用它的项目,或者如果它是空的,它将映射为空。
public static MyObjectDetail getLastOne(MyObject myObject) {
List<MyObjectDetail> details = myObject.getMyObjectDetails();
if(details.isEmpty()) {
return null;
} else {
return myObject.getLastDetail(myObject);
}
}
这是我目前使用的@Mapping,如果列表不为空,它可以正常工作。
@Mapping(expression = "java(MyObjectDetailMapper.getLastOne(myObject).getNumber())", target = "number"),
解决方案:
@Mapping(expression = "java(null == MyObjectDetailMapper.getLastOne(myObject) ? null : MyObjectDetailMapper.getLastOne(myObject).getNumber())", target = "number"),
是否可以在
中使用 if-else 或三元运算符之类的条件@Mapping(expression="java(...)")
我有一个方法 returns ArrayList 的最后一项,但如果列表为空,它 returns null。我需要一个条件,所以如果我收到我可以使用它的项目,或者如果它是空的,它将映射为空。
public static MyObjectDetail getLastOne(MyObject myObject) {
List<MyObjectDetail> details = myObject.getMyObjectDetails();
if(details.isEmpty()) {
return null;
} else {
return myObject.getLastDetail(myObject);
}
}
这是我目前使用的@Mapping,如果列表不为空,它可以正常工作。
@Mapping(expression = "java(MyObjectDetailMapper.getLastOne(myObject).getNumber())", target = "number"),
解决方案:
@Mapping(expression = "java(null == MyObjectDetailMapper.getLastOne(myObject) ? null : MyObjectDetailMapper.getLastOne(myObject).getNumber())", target = "number"),