mapstruct List 自定义转换
时间: 2023-07-11 11:25:39 浏览: 233
MapStruct实体转换及List转换的方法讲解
在 MapStruct 中,如果需要自定义 List 类型的转换,可以使用 `@Mapping` 注解的 `qualifiedBy` 属性和自定义的转换方法来实现。
具体步骤如下:
1. 定义自定义的转换方法,方法必须是 `public` 且静态的,并接受两个参数:源类型的 List 和目标类型的 List。
```
@Named("listConverter")
public static List<TargetType> convert(List<SourceType> sourceList) {
// 自定义转换逻辑
}
```
2. 在 Mapper 接口中使用 `@Mapping` 注解的 `qualifiedBy` 属性引用自定义的转换方法。
```
@Mapper
public interface MyMapper {
@Mapping(source = "sourceList", target = "targetList", qualifiedBy = {ListConverter.class})
TargetObject sourceToTarget(SourceObject source);
@Named("listConverter")
static List<TargetType> convert(List<SourceType> sourceList) {
// 自定义转换逻辑
}
}
```
3. 定义 `ListConverter` 注解,并在自定义的转换方法上使用。
```
@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface ListConverter {}
```
这样,在转换时,MapStruct 就会自动调用自定义的转换方法对 List 类型进行转换。
阅读全文