1、我用Apeche包下的org.apache.commons.beanutils.BeanUtils.copyProperties,如果有BigDecaimal为空的时候会报错,非内置对象为空时都会报错
在这个方法里对原始对象的类型分别采用了不同的逻辑:
Map : 通过Map的Key与dest中的属性进行匹配,然后赋值;可以作为source但是不能作为target
DynaBean :DynaBean顾名思义,它是一种可以形成动态java bean的对象,也就是说它内部会存储属性名称、类型以及对应的值,在copy属性时也是将其内部的属性名称与dest对象的属性名称对应后赋值;
标准Java Bean :这个是我们主要进行分析的类型,它是标准的JavaBean对象;与前两者的差异只是在于对原始bean的取值的处理上.
2、Spring包下的org.springframework.beans.BeanUtils.copyProperties
BeanUtils 位于spring-beans模块中,暴露出静态方法copyProperties用以进行属性copy,每个copyProperties最终均调用一个私有静态方法实现属性copy:
3、实现 Cloneable 接口
4、转json
5、序列化
6、mapstruct属于硬编码 效率最高
但是写着比较痛苦,每个转换都得写一个类
MapStruct是一个Java注释处理器,用于生成类型安全的bean映射类。