将一个对象转换成另一个,比如User-> UserDto。
| 方式 | 原理 | 性能排名 | 实测性能排名 | 版本 | 备注 |
|---|---|---|---|---|---|
| ide插件:GenerateAllSetter/或者人工设置setter方法 | |||||
| Spring BeanUtils | 基于Spring的反射工具类 | 3 | 4 | 5.3.22 | |
| Apache BeanUtils | 基于反射 | 6 | 5 | 1.9.4 | |
| CGLib BeanCopier | 基于ASM(字节码操控框架)的MethodVisitor为field赋值 | 4 | 1 | 5.3.22 | |
| Dozer | 反射,基于Filed.set(obj,obj)为field赋值 | 5 | 6 | 5.5.1 | 停更 |
| Orika | 基于javassist生成对象映射字节码,并加载生产字节码文件 | 2 | 3 | 1.5.4 | 可以实现从一个对象递归拷贝数据至另一个对象. 1. 大概是Dozer的8-10 倍. 2. 大概是Dozer内存消耗的一半多点。 |
| MapStruct | 基于JSR269,在编译期生产对象映射代码 | 1 | 2 | 1.5.2 | |
| modelMapper | 反射 | 7 | 3.1.0 |
https://www.cnblogs.com/franson-2016/p/16277859.html
https://www.codingdict.com/questions/2201
http://t.zoukankan.com/fuzongle-p-12609063.html