@Mappings({
@Mapping(target = "id", source = "tagRecord.tagId"),
@Mapping(target = "label", source = "tagRecord.tagLabel")
})
Tag mapToBean(TagRecord tagRecord);
public Tag mapToBean(TagRecord tagRecord) {
if ( tagRecord == null ) {
return null;
}
Tag tag_ = new Tag();
if ( tagRecord.getTagId() != null ) {
tag_.setId( tagRecord.getTagId() );
}
if ( tagRecord.getTagLabel() != null ) {
tag_.setLabel( tagRecord.getTagLabel() );
}
return tag_;
}
如果(tagrecord.gettagid()==null&&tagrecord.gettaglabel()==null),我实际上希望生成的方法返回一个null标记对象。有没有可能,我该如何实现这一点?
MapStruct目前不直接支持这一点。但是,您可以在修饰符
的帮助下实现您想要的,并且您必须手动检查所有字段是否为空,并返回null
而不是对象。
@Mapper
@DecoratedWith(TagMapperDecorator.class)
public interface TagMapper {
@Mappings({
@Mapping(target = "id", source = "tagId"),
@Mapping(target = "label", source = "tagLabel")
})
Tag mapToBean(TagRecord tagRecord);
}
public abstract class TagMapperDecorator implements TagMapper {
private final TagMapper delegate;
public TagMapperDecorator(TagMapper delegate) {
this.delegate = delegate;
}
@Override
public Tag mapToBean(TagRecord tagRecord) {
Tag tag = delegate.mapToBean( tagRecord);
if (tag != null && tag.getId() == null && tag.getLabel() == null) {
return null;
} else {
return tag;
}
}
}
我编写的示例(构造函数)是针对具有default
组件模型的映射器的。如果您需要使用Spring或其他DI框架,请查看:
@decoratedwith
,而应使用CDI装饰器我找不到答案,我相信MapStruc不可能这样做。无论如何我想问一下,也许我错过了什么。 我有一个映射方法,它采用两个源并映射到一个目标,比方说 生成的代码执行以下检查以返回: 我希望 附注:我们使用MapStruct 1.3.1
大家好! 我正在Spring应用程序中实现Mapstruct映射器。 有两个相关实体:和。只是为了简化->用户可以有许多订单。 OrderMapper类: 好吧,我的问题是: 如果我使用以下命令传递OrderDTO: 前面描述的情况在我的应用程序中造成了巨大的问题。如果有任何帮助,我将不胜感激。
问题内容: 我有以下映射 我如何配置我的Mapper或Mappings,以便当childId为null时,将目标Entity.child设置为null而不是Entity.child.id? 问题答案: 对于我来说,找到的不是一个非常优雅的解决方案,而是可行的解决方案。 首先将接口更改为抽象类,然后添加
默认情况下,MapStruct将NullValueMappingStrategy作为RETURN_NULL。我的要求是,当source为null时,我需要抛出一个NPE,类似于lombok的@nonnull的工作方式。
我已经连接表与一个 新娘模型: 计划模型: 我有一个查询将这些数据返回到endpoint。 一切都很好,除了一件事。在婚宴桌上,一些身份证上没有计划。因此,当我返回数据时,一些带有一个空的数组。 我想阻止这种情况。如果没有计划,那么我不想返回该新娘id。在这里我如何才能实现我想要的?
是否可以将此代码转换为Java8可选的单行表达式? i、 如果某个对象不是null,我需要调用一个对象方法并返回其结果,否则返回0<代码>可选。不可数()。orElse()不适合,因为它返回相同类型的对象,但我需要方法调用的结果或一些默认值。