不同实体类相同属性赋值,复制对象里的值到另一个对象里的工具类
2018-02-24 09:58
2636 查看
方法://不同实体类相同属性赋值,只复制有get,set方法的属性,默认不忽略空字符串,加参数true后忽略
public static void attrCopy(Object objFrom,Object objTo,String key,Boolean... args){
Class clsFrom=null;
Class clsTo=null;
try {
clsFrom = Class.forName(objFrom.getClass().getName());
clsTo = Class.forName(objTo.getClass().getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//获取两个实体类的所有属性
Field[] objFromFields = clsFrom.getDeclaredFields();
Field[] objToFields = clsTo.getDeclaredFields();
boolean ignoreEmpty=false;
//遍历赋值
for (Field formField : objFromFields) {
//如果是属性id不赋值
if(formField.getName().equals(key))
continue;
Object value = invokeGetMethod(objFrom ,formField.getName());
//如果是null不赋值
if (value!=null) {
for (Boolean bl : args) {
if (bl) {
ignoreEmpty=true;//忽略空字符串
break;
}
}
//如果是空字符串不赋值
if (ignoreEmpty) {
if (value instanceof String) {
String string=(String)value;
if (string.trim().length() == 0) {
continue;
}
}
}
for (Field toField : objToFields) {
//找相同的属性
if(formField.getName().equals(toField.getName())){
Object[] obj = new Object[1];
obj[0] = value;
invokeSetMethod(objTo, toField.getName(), obj);
break;
}
}
}
}
} 如何调用:
object1; //复制的对象
object2;//粘贴的对象
attrCopy(object1, object2, "主键Id");
public static void attrCopy(Object objFrom,Object objTo,String key,Boolean... args){
Class clsFrom=null;
Class clsTo=null;
try {
clsFrom = Class.forName(objFrom.getClass().getName());
clsTo = Class.forName(objTo.getClass().getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//获取两个实体类的所有属性
Field[] objFromFields = clsFrom.getDeclaredFields();
Field[] objToFields = clsTo.getDeclaredFields();
boolean ignoreEmpty=false;
//遍历赋值
for (Field formField : objFromFields) {
//如果是属性id不赋值
if(formField.getName().equals(key))
continue;
Object value = invokeGetMethod(objFrom ,formField.getName());
//如果是null不赋值
if (value!=null) {
for (Boolean bl : args) {
if (bl) {
ignoreEmpty=true;//忽略空字符串
break;
}
}
//如果是空字符串不赋值
if (ignoreEmpty) {
if (value instanceof String) {
String string=(String)value;
if (string.trim().length() == 0) {
continue;
}
}
}
for (Field toField : objToFields) {
//找相同的属性
if(formField.getName().equals(toField.getName())){
Object[] obj = new Object[1];
obj[0] = value;
invokeSetMethod(objTo, toField.getName(), obj);
break;
}
}
}
}
} 如何调用:
object1; //复制的对象
object2;//粘贴的对象
attrCopy(object1, object2, "主键Id");
相关文章推荐
- 对不同对象的相同属性进行赋值,被改变的是des
- 不同实体类相同属性之间的快速赋值
- 多表结构相同、不同配置文件,对象属性值复制(Java)
- 对象属性复制工具类
- 如何根据某个实体属性字段的不同值来设置另一个实体属性字段的值
- Java相同类型的两个对象比较属性值,得到不同属性的名称和对应的值,附代码实例
- 【反射机制】两个类名不同但其属性相同的对象,如何将一个对象的值赋给另外一个对象
- 利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils
- 一个类把属性值赋值给另一个类的相同的属性
- C# 不同类型对象同名属性赋值
- C#用反射实现两个类的对象之间相同属性的值的复制
- 复制两个不同类的对象的属性
- 对象相同属性复制
- Java利用反射实现对象之间相同属性复制
- [置顶] 关于不同对象且属性名称也不一样的两个对象之间的复制以及动态对象生成
- java利用反射完成不同类之间相同属性的复制
- SpringMVC在对应绑定不同实体,但具有相同属性名的解决方案....
- 利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils
- javabean 不同的类 相同属性赋值
- 在动态引用DLL-A中,当参数是个实体,而实体的属性在另一个DLL-B中。。我们需要得到A这个实体并将其赋值,并将赋值的实体传人DLL-A的方法中。