@Mapper
npublic interface POToVOMapper {
POToVOMapper poToVOMapper = Mappers.getMapper(POToVOMapper.class);
@Mappings({
@Mapping(target="address",source="user.name")
})
UserVO userToUserVO(User user);
}
1、如果要设置多个属性的po与vo对应的值,使用@Mappings注解,里面配多个@Mapping就行
2、Mapping中的参数解析
(1)target的值为目标实体的属性(即转换后得到的实体的属性)
(2)source的值为源实体的属性(即需要用来进行转换的实体的属性)
(3)expression: 可以通过表达式来构造一些简单的转化关系,目前仅支持java,java()里面的类必须指定全类名,否则在编译时,找不到对应的类
示例
@Mappings({
@Mapping(target="address",source="user.name"),
@Mapping(target = "birthday" ,expression = "java(new java.text. SimpleDateFormat("yyyy-MM-dd").format(user.getBirthday()))")
})
注:
1、若是PO转VO,则target的值就是VO的属性,source的值就是PO的属性
2、若是VO转PO,则target的值就是PO的属性,source的值就是VO的属性
3、每个Mappings下都必须有单独的po转vo,或vo转po,相应的集合才会有有效,否则,若只有集合转,mapstruct是找不到集合里面的对象的对应属性的。直接报异常。