将实体转换为 dto 的最佳方法是什么?对于 Spring REST API 应用程序

What is the best way to convert entity to dto? For Spring REST API Application

我创建了一个抽象 class 以在继承 class 中使用 modelmapper 生成实体列表或 dto。您对更好的方法有什么建议吗?对于每个 class,我们需要创建 toDTO 和 toEntity 方法

public abstract class AbstractConverter<Entity,DTO> {

    @Autowired
    ModelMapper modelMapper;

    public List<Entity> toEntityList (Iterable<DTO> listDTO) {
        List<Entity> list = new ArrayList<Entity>();

        if(listDTO != null) {
            for (DTO dto:listDTO) {
                Entity entity = toEntity(dto);
                list.add(entity);
            }
        }
        return list;
    }
    
    public List<DTO> toDTOList (Iterable<Entity> listEntity) {
        List<DTO> list = new ArrayList<DTO>();

        if(listEntity != null) {
            for (Entity entity:listEntity) {
                DTO dto = toDTO(entity);
                list.add(dto);
            }
        }
        return list;
    }
}
@Component
public class UserConverter extends AbstractConverter<User,UserDTO> {

    public User toEntity(UserDTO userDTO) {
        if (userDTO != null) {
            return modelMapper.map(userDTO, User.class);
        }
        return null;
    }

    public UserDTO toDTO(User user) {
        if (user != null) {
            return modelMapper.map(user, UserDTO.class);        
        }
        return null;
    }
}

您应该看看 MapStruct,这是一个专注于 Java Beans 映射的库。对于简单的情况,效果很好。如果您有一些更复杂的映射,它可能不会那么简单。尽管如此,我还是值得一试。您可以找到一些关于它的非常好的文档:

我相信您可以用它代替 ModelMapper 来简化您的代码。