MapStruct DTO 属性

MapStruct DTO property

我需要在我的 DTO 上有一个像 idEncrypted 这样的 属性,因为它们只能通过加密传递给我,但是,我需要映射我在 DB 上找到的解密 ID。我已经有一个解密方法,但我不知道如何映射它并忽略 idEncrypted。

@Data
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
public class MyDTO {  

    private String idEncrypted;
  
    ...
    ...

}

我不知道在哪里做转换

idDecrypted = Long.parseLong(MyUtils.decrypt(idEncrypted));

您可以编写自己的自定义限定方法来进行解密。

例如

@Mapper
public MyMapper {

    @Mapping(target = "id", source = "idEncrypted", qualifiedByName = "decryptId")
    MyEntity map(MyDTO dto);

    @Named("decryptId")
    default Long decryptId(String id) {
        return id != null ? Long.parseLong(MyUtils.decrypt(id)) : null;
    }
}