小编Zmu*_*mur的帖子

强制 MapStruct 使用自定义方法而不是 dto 值

我有一个要映射的 UserDTO 和 User 实体。创建新用户时,某些字段(例如:passwordmodifiedBy)必须通过某种自定义方法生成(例如:password随机生成和编码,但modifiedBy用户名是从安全服务中检索的)。为此,我将一些服务自动连接到映射器中。他们中的许多人返回,String而 MapStruct 无法理解在每种情况下使用哪个,而只使用它在接受String作为输入的所有内容上找到的第一个。

@Mapper(componentModel = "spring", uses = PasswordEncoder.class)
public interface UserMapper {

@Mapping(target = "password", qualifiedByName = "PASS")
User mapUser(UserDto dto);

@Named("PASS")
default String getPass(PasswordEncoder passwordEncoder){
    return passwordEncoder.encode(some_random_generator);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将生成仅使用PasswordEncoder任何接受的 setter 中的方法的代码,String并且getPass(...)根本不使用方法。但是我只需要它getPass(...)password现场使用我的方法。

java spring-boot mapstruct

1
推荐指数
1
解决办法
4575
查看次数

标签 统计

java ×1

mapstruct ×1

spring-boot ×1