我正在使用MapStruct进行dto <-> entity
映射。相同的映射器用于从 dto创建 和 更新实体。对 dto 的 id 进行验证以了解是否必须创建新实体 (id == null) 或者应该从数据库中检索 (id != null)。
我实际上使用MapperDecorator作为解决方法。例子 :
映射器
@Mapper
@DecoratedWith(UserAccountDecorator.class)
public interface UserAccountMapper {
UserAccountDto map(User user);
User map(UserAccountDto dto);
User map(UserAccountDto dto, @MappingTarget User user);
}
装饰器
public abstract class UserAccountDecorator implements UserAccountMapper {
@Autowired
@Qualifier("delegate")
private UserAccountMapper delegate;
@Autowired
private UserRepository userRepository;
@Override
public User map(UserAccountDto dto) {
if (dto == null) {
return null;
}
User user = new User();
if (dto.getId() != null) {
user = userRepository.findOne(dto.getId());
}
return delegate.map(dto, user);
}
}
但是由于必须为每个映射器创建一个装饰器,这个解决方案变得很重。
有什么好的解决方案来执行吗?
我在用着 :
- 地图结构:1.1.0