MapperStruct 嵌套模型中 List<> 转 List<String>

废话不多说,上代码

 

宗旨:将List<A> 映射为 List<String>

一,实体类

Source

//Source中有一个List<A>
public class Source{
    private String id;
    private String from;
    private List<A> toRecipients;
 
}
 
//A对象中有个B
public class A{
    private B b;
}
 
//B有个address属性
public class B{
   private String address;
}

Target

public class Target {
    private String id;
    private String from;
    private List<String> to;
}

 

二,Mapper映射接口

 
import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.Recipient;
import io.github.linpeilie.BaseMapper;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
 
import javax.xml.transform.Source;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * @author: Tyler
 * @create: 2024-07-26
 */
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MyMapper {
    MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
 
    @Mappings({
        @Mapping(source = "id", target = "id"),
        @Mapping(source = "from", target = "from"),
        @Mapping(source = "toRecipients", target = "to"),
    })
        //实体转换
    Target convert(Source entity);
 
    //List转换
    List<MyMapper> convertList(List<Source> entitys);
 
    //自定义 List<A> 映射 List<String>
    default List<String> convertToString(List<A> entitys) {
        List<String> list=entitys.stream().map(x->x.getB().getAddress()).collect(Collectors.toList());;
        return list;
    }
 
}

 

三,调用

List<Target> list = MyMapper.INSTANCE.convertList(List<Source>);

 

posted @ 2024-07-26 15:31  正怒月神  阅读(65)  评论(0编辑  收藏  举报