说到Java的属性复制,大家很快就想到了 BeanUtils.copyProperties();,其中Apache下的属性复制,其性能很慢,用到了反射的机制,还记录到了很多日志,Spring下的属性复制比Apache快很多,但是毕竟使用了反射,性能还是比较慢,这里推荐大家使用MapStruct属性复制。
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
<scope>provided</scope>
</dependency>
引入依赖
新建一个类,加入注解@Mapper
@Mapper
public interface ProductConverter {
ProductConverter INSTANCE = Mappers.getMapper(ProductConverter.class);
Product dto2domain(ProductAdminDto productDto);
}
使用:
Product curproduct=ProductConverter.INSTANCE.dto2domain(productDto);
这样就可以将dto转成你的实体了。因为MapStruct是在编译期就生成了,所以速度非常快。