类与类转换:
//org.springframework.beans.BeanUtils
public static void copyProperties(Object source, Object target){....}
//org.apache.commons.beanutils.BeanUtils
public static void copyProperties(Object dest,Object orig){....}
有两种方式,方法名一样,但是引用包不一样
import org.springframework.beans.BeanUtils;
BeanUtils.copyProperties(被copy对象,要输出显示的新对象)
举例:
输出结果:
执行结果如下: Student(id=00c47e77-785d-4939-89db-e757979050ec, name=zhangsan, age=19) Teacher(id=00c47e77-785d-4939-89db-e757979050ec, name=zhangsan, age=19, sex=null)
第二种:
org.apache.commons.beanutils.BeanUtils
BeanUtils.copyProperties(teacher,student); //因为apache包下被copy的参数在第二个位置
apache包下被copy的参数在第二个位置
小结:当目标对象(target/dest)中包含被copy的对象(source/orig)的所有字段时,两种包下的copyProperties方法均可以执行成功。
目标对象(target/dest)中不包含被copy的对象(source/orig)的所有字段时,应选用org.springframework.beans.BeanUtils下的copyProperties方法
小结:目标对象(target/dest)中包含被copy的对象(source/orig)的所有字段时,两个包下的copy方法都可以,而且目标对象(target/dest)中多于的对象的值不会被覆盖掉。
(初始对象 a.b.c 二次对象 a.b.c.d 当d有值,进行对象赋值时,d值不会消失)
总结:
1、org.apache.commons.beanutils.BeanUtils和org.springframework.beans.BeanUtils两个包中的copyProperties方法目标对象和源对象参数的位置是相反,使用时需要注意。
2、使用org.apache.commons.beanutils.BeanUtils进行copy对象时,被copy的对象(source/orig)中包含的字段目标对象(target/dest)必须包含,可以有其他的多于字段,类型可以不相同,但字段名称必须一致;org.springframework.beans.BeanUtils中的没有这个限制。
集合与集合转换
ConvertBeanUtils.converBean2BeanInList(data, SysDictDataRes.class);
第一槽是初级集合,第二槽是新集合
List<SpDepositInfo> list = spDepositInfoService.selectSpDepositInfoList(spDepositInfo);
List spDepositInfoExcelList = ConvertBeanUtils.converBean2BeanInList(list,SpDepositInfoExcel.class);