当前位置: 首页 > 知识库问答 >
问题:

如何使用MapStruct1.2有条件地映射属性?

丁慈
2023-03-14
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);

}

更准确地说,我甚至想要更详细的东西:目标应该是一个包含三个属性的类,其中产生的目标值必须被拆分为三个属性。例如,如果mysource.propa的值为“abc”,那么目标myTarget应该得到一个类似于“v01.123.456.ab”的值。该值依次分为preValue、middleValue和endvalue:

preValue=“V01”

middleValue=“123.456”

@Mapper(componentModel = "spring", uses = MyCustomMapper.class)

共有1个答案

何睿范
2023-03-14

你不能用MapStruct真的做到这一点。@valueMapping注释用于映射枚举

为了实现您所期望的功能,您需要在@beforeMapping@afterMapping中完成。

例如,您可以执行以下操作:

@Mapper
public interface JiraKpmMapper {

    @BeforeMapping
    default void beforeMapping(@MappingTarget MyTarget target, MySource source) {
        if (source.getPropY().equals("ABC") {
            target.setPropX("V01.123.456.AB");
        }
    }

    @Mapping(target = "propX", ignore = true) // This is now mapped in beforeMapping
    MyTarget source2Target(final MySource mySource);
}
 类似资料:
  • 我想用来自的条目创建一个哈希映射。属性文件。我的属性文件如下所示: 我将在excel表格中维护AA、BB、CC、DD。 我想遍历所有的行,当它在第一行时,它应该输入 变成一个哈希图 第二排它应该进入 变成了hashmap等等... 它应该为每次迭代将键和值添加到同一个哈希映射中,并从哈希映射中清除之前的条目

  • 问题内容: 我正在使用“可拖动”指令来支持图像拖动。但是,根据用户的角色,我需要为某些用户组禁用图像拖动。我使用了以下代码。 该方法在模板范围内,并返回或。我不想为所返回的每个值创建两个大的重复元素。换句话说,我不是在寻找以下方法来解决此问题。 还有其他方法可以避免代码重复吗? 问题答案: Angular包含对有条件声明HTML属性的支持,作为动态标题指令。 的官方文件 例 在您的情况下,代码可能

  • 这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?

  • 映射器类如下所示:

  • 我使用的是。我有一个类似的类。我有一个的。 null

  • 我想有条件地显示和隐藏这个按钮组,这取决于从父组件传递的内容,看起来像这样: .... .... 然而,{this.props.showBulkActions'show':'hidden'并没有发生任何事情。我做错什么了吗?