MapStruct处理Java实体的高级进阶使用

摘要: MapStruct有很多的配置选项,除了使用target和source外,还有一些注解选项可以实现更高级的功能。

defaultValue

有时候,在转换过程中,可能因为空值或其他原因使得映射结果不正确,此时可以指定一个默认值,防止程序出错。

@Mappings( {
@Mapping(target = "age", source = "evage", defaultValue = "20")
})

expressions

可以通过表达式来构造一些简单的转化关系。虽然设计的时候想兼容很多语言,不过目前只能写Java代码。

@Mapper
public interface SourceTargetMapper {

    SourceTargetMapper INSTANCE = Mappers.getMapper( SourceTargetMapper.class );

    @Mapping(target = "timeAndFormat",
         expression = "java( new org.sample.TimeAndFormat( s.getTime(), s.getFormat() ) )")
    Target sourceToTarget(Source s);
}

这里用到演示了如何使用TimeAndFormat对timeformat操作,这里必须要指定需要使用的Java类的完整包名,不然编译的时候不知道你使用哪个Java类,会报错。

处理空值

MapStrut提供了方法去修改空值的情形。默认情况下,返回的是null.

  • 基本数据类型: boolean 返回false, int 返回0
  • 数组/集合:空的数组或集合返回

你可能感兴趣的:(Java)