我最近开始使用mapstruct,在编码时我坚持使用一个场景。为了解决下面默认方法之间的模糊性,我试图在列表中使用“限定由”
@Mapping(qualifiedBy = LineTestBO). Line => 1
List<ReturnABO> toCaptureLineItemsBOs(List<LineDTO> lineDTO);
@Named("LineTestBO")
default ReturnABO map(LineDTO lineDTO) {
if (lineDTO.getCurrency() != null && lineDTO.getNationalPermit() != null &&
lineDTO.getAmount() != null && lineDTO != null)
return this.toBO(lineDTO);
return null;
}
default returnABO toBO(LineDTO lineDTO) {
// To do here
}
但是第1行显示错误,因为需要指定“target”。我不确定这里的目标应该是什么,因为Line是一个集合对象。即使我不使用@mapping,mapstuct也会生成mapper实现。我阅读了mapstuct文档,但对这个场景了解不多。如何在列表上使用命名注释来明确表示这是要使用的名称?有人能帮我吗?谢谢
产生错误的原因是在iterable映射方法上使用@Mapping
没有多大意义。
你要找的是IterableMapping#合格的
。
因此,在您的情况下,映射器需要如下所示:
@Mapper
public interface MyMapper {
@IterableMapping(qualifiedByName = "LineTestBO")
List<ReturnABO> toCaptureLineItemsBOs(List<LineDTO> lineDTO);
@Named("LineTestBO")
default ReturnABO map(LineDTO lineDTO) {
if (lineDTO.getCurrency() != null && lineDTO.getNationalPermit() != null && lineDTO.getAmount() != null && lineDTO != null) {
return this.toBO(lineDTO);
}
return null;
}
default returnABO toBO(LineDTO lineDTO) {
// To do here
}
}
必须指定目标,所以如果你的POJO看起来像这样
class A {
private List<ReturnABO> x;
}
class B {
private List<LineDTO> x;
}
在你的映射器中,你可以有这样的东西
interface AMapper {
@Mapping(target="x", source="x", qualifiedByName = "LineTestBO")
A toA(B b);
@Named("LineTestBO")
default List<ReturnABO> lineTestBO (List<LineDTO> lines) {
return lines.stream().map(this::map).collect(Collectors.toList())
}
default ReturnABO map(LineDTO lineDTO) {
if (lineDTO.getCurrency() != null && lineDTO.getNationalPermit() != null &&
lineDTO.getAmount() != null && lineDTO != null)
return this.toBO(lineDTO);
return null;
}
}
如何将字符串映射到列表,并将列表映射到字符串? 考虑到我们有以下班级 在Dozer和Orika中,我们可以使用以下代码行轻松映射 如何在MapStruct中进行相同类型的映射?在哪里可以找到有关mapstruct的更多示例?
下面是我的DTO。 源DTO 目标DTO
我是Mapstruct的新手。我试图将列表转换为地图,我在网上搜索了很多,我有一些解决方案,比如它还没有在mapstruct中实现。如果有人能提供一些替代解决方案,我将很高兴。所有我希望转换映射如下: 现在是否可以使用MapStruct来实现?
...但我得到: 我不知道如何应用这些信息。首先,我认为我需要为列表声明一些额外的映射(在同一个映射器类中),所以MapStruct知道如何像这样映射列表类型的每个字段: ...但我收到错误消息
我如何在下面的场景中使用Mapstruct进行bean映射。 现在我想把sourceId映射到targetId,courseName映射到subjectName,studentName映射到memberName(list到list)。
我尝试使用MapStruct编写映射器类,如下所示: 目前它显示了“未知属性”“customer.customerid”和“usertypes.usertype.userid”等错误。有人能帮我用MapStruct映射所有这些元素吗? 问题2:我们如何绘制跟踪图?1)customerId usertypes->user->userid 2)pdtPrice offers->OffersType->