mapstruct list属性映射
时间: 2025-04-18 12:40:34 浏览: 24
### MapStruct 中 List 属性映射的使用方法
在 MapStruct 中,列表类型的属性映射可以通过定义接口中的方法来实现。对于 `List` 类型的数据转换,只需声明源和目标之间的映射关系即可自动处理集合内的元素。
下面展示了一个具体的例子,说明如何配置并应用这种映射:
```java
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@Mapper
public interface MyMapper {
@Mapping(source = "id", target = "key")
@Mapping(source = "name", target = "value")
TargetEntity sourceToTarget(SourceEntity source);
default List<TargetEntity> dos2vos(List<SourceEntity> sources) {
if (sources == null) {
return null;
}
return sources.stream()
.map(MyMapper.this::sourceToTarget)
.collect(Collectors.toList());
}
}
```
在这个实例中,除了直接指定单个对象间的字段映射外[^1],还额外定义了一个默认的方法用于批量转换多个实体。该方法接收一个 `List<SourceEntity>` 参数,并返回对应的 `List<TargetEntity>` 结果集。值得注意的是,在实际项目里通常不需要手动编写这样的循环逻辑;上述做法是为了更清晰地解释工作原理。实际上,仅需简单声明如下形式的方法签名就足够了:
```java
List<TargetEntity> dos2vos(List<SourceEntity> source);
```
MapStruct 将会基于已有的单一对象映射规则自动生成相应的迭代代码[^3]。
#### 注意事项
- 当涉及到复杂嵌套结构时,可能还需要进一步调整映射策略或利用其他特性(如条件映射、表达式支持等)。
- 对于空值情况应考虑适当处理方式,防止潜在 NullPointerException 异常发生。
阅读全文
相关推荐


















