首页 > 解决方案 > 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);

标签: javamappingentitydtomapstruct

解决方案


我找到了答案。

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

推荐阅读