1、各大对象映射框架性能对比
工具 | 实现方式 | 缺点 | 说明 |
---|---|---|---|
mapstruct | getter/setter方法 | 需要了解注解和配置项语法 | JSR269注解处理器在编译期自动生成Java Bean转换代码,支持可配置化,扩展性强 |
orika | 动态生成字节码 | 首次调用耗时较久,性能适中 | 采用javassist类库生成Bean映射的字节码,之后直接加载执行生成的字节码文件 |
Spring BeanUtils | 反射机制 | 不支持名称相同但类型不同的属性转换 | |
Apache BeanUtils | 反射机制 | 需要处理编译期异常,性能最差 | |
dozer | 反射机制 | 性能差 | 使用reflect包下Field类的set(Object obj, Object value)方法进行属性赋值 |
BeanCopier | 反射机制 | \1. BeanCopier只拷贝名称和类型都相同的属性。即便基本类型与其对应的包装类型也不能相互转换; | 使用ASM的MethodVisitor直接编写各属性的get/set方法 |
就性能而言:mapstruct性能无疑是是最高的,接下来依次是Spring BeanUtils>orika>BeanCopier>dozer>apache BeanUtils
2、MapStruct的使用
2.1、引入pom
1 | xml复制代码<dependency> |
2.2 、单个bean映射
1 | less复制代码import org.mapstruct.Mapper; |
测试代码
1 | scss复制代码@Test |
2.3、多个bean的映射
1 | less复制代码@Mapper(componentModel = "spring") |
2.4、参数的含义映射
1 | less复制代码import org.mapstruct.Mapper; |
自定义的映射类
1 | typescript复制代码public class CustomMapping { |
3、orika的使用
3.1 引入pom
1 | xml复制代码<dependency> |
3.2、初始化实例
1 | kotlin复制代码package tech.chenxing.deploy.configuration; |
3.3、配置映射对象
定义转换器
1 | less复制代码public class FlowDocDOConverter extends CustomMapper<FlowDoc, FlowDocBean> { |
注入转换器
1 | kotlin复制代码package tech.chenxing.deploy.configuration; |
代码使用
1 | ini复制代码public xxx queryuser() { |
版权声明:本文为人工博客的原创文章,遵循 CC 4.0 BY+SA 版权协议,转载请附上原文出处链接及本声明。
本文链接:www.gzcx.net/article/179…
本文转载自: 掘金