【发布时间】:2022-01-28 16:56:35
【问题描述】:
你好, 我正在尝试在我的项目中使用映射框架,但我无法决定选择哪一个,其中有映射框架。 Selma v/s MapStruct v/s Model Mapper 映射框架?
请帮助我选择最好的功能和性能导向的框架。
【问题讨论】:
标签: mapping
你好, 我正在尝试在我的项目中使用映射框架,但我无法决定选择哪一个,其中有映射框架。 Selma v/s MapStruct v/s Model Mapper 映射框架?
请帮助我选择最好的功能和性能导向的框架。
【问题讨论】:
标签: mapping
鉴于 Java 8 Stream API 和 lombok 注释处理器库,我不再使用此映射框架。我通过实现spring框架的Converter接口(@987654323@)来创建自己的映射器
@Component
public class ProductToProductDTO implements Converter<Product, ProductDTO> {
@Override public ProductDTO convert( Product source ) {
ProductDTO to = ProductDTO.builder()
.name( source.getName())
.description( source.getDescription() )
.tags(source.getTags().stream().map(t -> t.getTag().getLabel()).collect( Collectors.toList()))
.build();
return to;
}
}
@Builder //lombok annotation to create Builder class
@Data //lombok annotation to create getters & setters
@AllArgsConstructor //required for @Builder
public class ProductDTO {
private String name;
private String description;
private List<String> tags;
}
【讨论】:
我之前在寻找利用注释处理器的解决方案时遇到过类似的情况。我会选择 Selma 或 MapStruct。有点类似是代码生成器。两者都玩过,但与 MapStruct 一起玩。 SO中的类似问题可以帮助您-Java mapping: Selma vs MapStruct
还有一个在 github 中对对象到对象映射器框架进行基准测试的项目在顶部有 Selma 和 MapStruct - https://github.com/arey/java-object-mapper-benchmark
【讨论】:
Converter接口来创建自己的映射器(package org.springframework.core.convert.converter.Converter)
MapStruct)比使用反射的运行时映射器(如ModelMapper)快得多。
当您点击here 时,您可以找到最常用的映射框架之间的完整比较。在此链接中,您可以找到基准比较、如何使用每个框架等。 我决定使用 MapStruct 是因为它易于使用且速度非常快。
【讨论】: