MapStruct 1.2是否可以将具有特定值的源属性映射到目标中的特定不同值?
我想到这样的事情:
public abstract class JiraKpmMapper {
@Mappings({
@Mapping(source = "mySource.propA", target = "myTarget.propX")
})
@ValueMappings({
@ValueMapping(source = "ABC", target = "XYZ"),
@ValueMapping(source = "123", target = "789")
})
public abstract MyTarget source2Target(final MySource mySource);
}
因此,当MapStruct在映射期间看到mySource.propA具有值" ABC" myTarget.propX需要设置为值" XYZ"等等。
更确切地说,我甚至想要更详细的内容: 目标应该是一个避开三个属性的类别,其中必须将得到的目标值拆分成。 例如,如果mySource.propA的值为" ABC"目标myTarget应该得到类似" V01.123.456.AB"的值。该值又应分为preValue,middleValue和endValue:
preValue =" V01"
middleValue =" 123.456"
endValue =" AB"
因此没有包含完整结果字符串的属性。
这就是为什么我已经写了一个自定义映射器,并告诉MyMapper通过
使用它@Mapper(componentModel = "spring", uses = MyCustomMapper.class)
到目前为止这是有效的,但我无法告诉MyCustomMapper放置" V01.123.456.AB"当souzrce带来" ABC"。
时进入目标答案 0 :(得分:3)
您可以这样做
@Mapping(target = "myTarget.propX",expression="java(mySource.getPropA().equals(\"Abc\")?"\"V01.123.456.AB\":\"\")")