如何使用 MapStruct 在一个字段中应用 List?

How to apply List in one field with MapStruct?

我有这个 POJO :

public class PlayerDto {

    private Long id;
    private String name;
    private String past;

}

我有这个实体:

public class Player {

    private Long id;
    private String name;
    private List<String> past;

}

如何通过 MapStruct 将 List<String> past 映射到 DTO 的 String past 中?例如,列表包含 [Monty、Boto、Flaouri],而 DTO 的字符串必须在单个字符串中包含 "Monty, Boto, Flaouri"。

这种经典方式不适用于目标和源:

@Mappings({
            @Mapping(target = "past", source = "past"),
})
PlayerDto entityToDto(final Player entity);

谢谢

我想您需要在映射器接口中定义一个默认方法来处理从 List<String>String 的数据转换。 Mapstruct 将自动使用默认方法。

映射的默认方法签名应如下所示:

String map(List<String> past)

示例:

default String map(List<String> past) {
    return past.stream().collect(Collectors.joining(","));
}