java实体类全部复制到新类及部分复制到新类
类的复制一般用这个方法
BeanUtils.copyProperties(classA, classB);
A表示资源类,就是被复制的类
B表示目标类,就是最后的结果类
这个方法也有个弊端,就是只能把A中所有的数据都复制到B里去。值为null的也会复制过去。如果之前为null的数据已经编辑过,此时就不能覆盖。
当然可以依次判断,然后一个个导入,如果数据多,那得累死。废话少说,上代码
public static Object updateDto(Object source, Object target) {Field[] sources = source.getClass().getDeclaredFields(); // 获取类的属性数组for (int i = 0; i < sources.length; i++) {String fieldName = sources[i].getName();try {String firstLetter = fieldName.substring(0, 1).toUpperCase();String getter = "get" + firstLetter + fieldName.substring(1);// 原 class 的属性值Method method = source.getClass().getMethod(getter, new Class[]{});Object value = method.invoke(source, new Object[]{});// 此处加判断if (null != value){// 被赋值的 classClass c = target.getClass();// 获取该类的成员变量Field f = c.getDeclaredField(fieldName);// 取消语言访问检查f.setAccessible(true);// 给变量赋值f.set(target, value);}} catch (Exception e) {System.out.println(e.getMessage());}}return target; }
思路很简单,就是依次获取A类的属性和值,然后判断是否为空,不为空在替换。