代码之家  ›  专栏  ›  技术社区  ›  Paul Marcelin Bejan

MapStruct@Mapping(expression=“java(…)”)

  •  0
  • Paul Marcelin Bejan  · 技术社区  · 5 年前

    @Mapping(expression="java(...)")
    

    我有一个方法返回ArrayList的最后一项,但如果列表为空,它将返回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"),
        
    
    0 回复  |  直到 4 年前
        1
  •  3
  •   Paul Marcelin Bejan    4 年前

    解决方案:

    @Mapping(expression = "java(null == MyObjectDetailMapper.getLastOne(myObject) ? null : MyObjectDetailMapper.getLastOne(myObject).getNumber())", target = "number"),