MapStruct:如何过滤到我想要和不想映射的字段?

时间:2019-09-17 07:36:06

标签: java mapping entity dto mapstruct

我有一个DTO。我不想映射MapStruct中的所有字段。

例如,User和UserDTO

public class UserDTO {

    private Long id;
    private String username;
    private String password;
    private String email;
    private boolean active;
    private String activationCode;
    private Set<Role> roles;

}

我有下一个映射器:

User fromUserDTO(UserDTO userDTO);

我不想映射ID,用户名,密码,电子邮件。如何指出这些字段不会卡住?

User user = fromUserDTO(userDTO);

1 个答案:

答案 0 :(得分:1)

我找到了答案。

  1. 我可以忽略一个字段:
@Mapping(target = "id", ignore = true)
User fromUserDTO(UserDTO userDTO);
  1. 或者我可以忽略等于null的字段:
@Mapping(target="id", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
User fromUserDTO(UserDTO userDTO);