【问题标题】:How to use mapstruct with a source that has two parameters?如何将 mapstruct 与具有两个参数的源一起使用?
【发布时间】:2022-01-31 16:44:59
【问题描述】:

似乎 mapstruct 可以与只有一个参数的源一起使用。如果设置 "source = {"id","name"} " 时我会出错。怎么解决?

 @Mapping(source = {"id","name"}, target = "person", qualifiedByName = "toPerson")
 public MainData toEntity(InfoDTO dto);
 
    @Named("toPerson")
    public Person toPerson(Long id, String name) {
        //some to do
    }

我的实体:

MyData{
Person person;
}

InfoDTO{
Long id;
String name;
}

【问题讨论】:

  • 可以添加要映射的实体吗?
  • 我已经更新了问题,见上图:MyData{ Person person; } InfoDTO{ 长ID;字符串名称; }

标签: java spring-boot mapstruct


【解决方案1】:

可以这样完成:

@Mapper(componentModel = "spring")
public interface PersonMapper {

    @Mapping(expression = "java(toPerson(dto))", target = "person")
    MyData toEntity(InfoDto dto);

    default Person toPerson(InfoDto dto) {
        return new Person(dto.getId(),dto.getName());
    }

}

【讨论】:

  • 叶戈尔,非常感谢!此代码有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
相关资源
最近更新 更多