摘要: 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对time
和format
操作,这里必须要指定需要使用的Java类的完整包名,不然编译的时候不知道你使用哪个Java类,会报错。
处理空值
MapStrut提供了方法去修改空值的情形。默认情况下,返回的是null
.
- 基本数据类型: boolean 返回false, int 返回0
- 数组/集合:空的数组或集合返回