如何将 mapStruct 用于 PatchMapping?
How can I use mapStruct for a PatchMapping?
我想知道我能否忽略空字段并仅转换我在请求中输入的属性
我的实体:
public class Entity {
private Long id;
private String name;
private String description;
}
我的 DTO:
public class EntityDTO {
private String name;
private String description;
}
我的映射器:
@Mapper(componentModel = "spring")
public interface EntityMapper {
@BeanMapping(nullValueCheckStrategy = NullValueCheckStrategy.ON_IMPLICIT_CONVERSION)
Entity toEntity(EntityDTO entityDTO);
}
我生成的代码:
@Component
public class EntityMapperImpl implements EntityMapper {
@Override
public Entity toEntity(EntityDTO entityDTO) {
if (entityDTO == null) {
return null;
}
EntityBuilder entity = Entity.builder();
entity.name(tipoOperacaoParcialUpdate.getName());
entity.description(tipoOperacaoParcialUpdate.getDescription());
return entity.build();
}
}
我想要这样的生成代码:
@Component
public class EntityMapperImpl implements EntityMapper {
@Override
public Entity toEntity(EntityDTO entityDTO) {
if ( entityDTO.getName() != null ) {
entityDTO.setName(entityDTO.getName());
}
if ( entityDTO.getDescription() != null ) {
entityDTO.setDescription(entityDTO.getDescription());
}
EntityBuilder entity = Entity.builder();
entity.name( entityDTO.getName());
entity.description( entityDTO.getDescription());
return entity.build();
}
}
我想要这样的东西,我如何使用 mapStruct 做到这一点?
谢谢!
我想你要找的是Updating existing bean instances。
e.q.
@Mapper(componentModel = "spring")
public interface EntityMapper {
Entity updateEntity(@MappingTarget Entity entity, EntityDTO dto);
}
这将生成如下内容:
@Component
public class EntityMapperImpl implements EntityMapper {
@Override
public Entity updateEntity(Entity entity, EntityDTO dto) {
if ( dto == null ) {
return null;
}
if ( dto.getName() != null ) {
entity.setName(dto.getName());
} else {
entity.setName( null );
}
if ( dto.getDescription() != null ) {
entity.setDescription(dto.getDescription());
} else {
entity.setDescription( null );
}
return entity;
}
}
如果您想避免设置为 null,您可以使用 NullValuePropertyMappingStrategy#IGNORE
我想知道我能否忽略空字段并仅转换我在请求中输入的属性
我的实体:
public class Entity {
private Long id;
private String name;
private String description;
}
我的 DTO:
public class EntityDTO {
private String name;
private String description;
}
我的映射器:
@Mapper(componentModel = "spring")
public interface EntityMapper {
@BeanMapping(nullValueCheckStrategy = NullValueCheckStrategy.ON_IMPLICIT_CONVERSION)
Entity toEntity(EntityDTO entityDTO);
}
我生成的代码:
@Component
public class EntityMapperImpl implements EntityMapper {
@Override
public Entity toEntity(EntityDTO entityDTO) {
if (entityDTO == null) {
return null;
}
EntityBuilder entity = Entity.builder();
entity.name(tipoOperacaoParcialUpdate.getName());
entity.description(tipoOperacaoParcialUpdate.getDescription());
return entity.build();
}
}
我想要这样的生成代码:
@Component
public class EntityMapperImpl implements EntityMapper {
@Override
public Entity toEntity(EntityDTO entityDTO) {
if ( entityDTO.getName() != null ) {
entityDTO.setName(entityDTO.getName());
}
if ( entityDTO.getDescription() != null ) {
entityDTO.setDescription(entityDTO.getDescription());
}
EntityBuilder entity = Entity.builder();
entity.name( entityDTO.getName());
entity.description( entityDTO.getDescription());
return entity.build();
}
}
我想要这样的东西,我如何使用 mapStruct 做到这一点?
谢谢!
我想你要找的是Updating existing bean instances。
e.q.
@Mapper(componentModel = "spring")
public interface EntityMapper {
Entity updateEntity(@MappingTarget Entity entity, EntityDTO dto);
}
这将生成如下内容:
@Component
public class EntityMapperImpl implements EntityMapper {
@Override
public Entity updateEntity(Entity entity, EntityDTO dto) {
if ( dto == null ) {
return null;
}
if ( dto.getName() != null ) {
entity.setName(dto.getName());
} else {
entity.setName( null );
}
if ( dto.getDescription() != null ) {
entity.setDescription(dto.getDescription());
} else {
entity.setDescription( null );
}
return entity;
}
}
如果您想避免设置为 null,您可以使用 NullValuePropertyMappingStrategy#IGNORE