java类的映射
在两个类中有相同属性时,将源类的数据映射到目标类中,并返回目标类。如果目标类包含多个实体类的字段,也可以使用该方法,只需要多次调用就可以
/**
* 将source类中的内容映射到aims类中
* 要求只有属性名一致的情况下才会映射
* @param aims
* @param source
* @return
* @throws Exception
*/
public Object mapping(Object aims,Object source) throws Exception {
Class<?> bClass = source.getClass();
//获取源实体类的所有属性信息
Field[] fields = bClass.getDeclaredFields();
//获取属性个数
int length = fields.length;
try {
for (int i = 1; i < length ; i++) {
//获取属性名
String key = fields[i].getName();
//获取属性类型
Class<?> type = fields[i].getType();
//拼接get方法
String getMethodName = "get" + key.substring(0, 1).toUpperCase() + key.substring(1);
Method getMethod = bClass.getDeclaredMethod(getMethodName, null);
Object value = getMethod.invoke(source);//执行拼接的get方法
Class<?> aClass = aims.getClass();
Field[] aFields = aClass.getDeclaredFields();
for (Field field : aFields) {
String name = field.getName();
if (name.equals(key)) {
//拼接set方法
String setMethodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
Method setMethod = aClass.getDeclaredMethod(setMethodName, type);
setMethod.invoke(aims, value);
}
}
}
} catch (Exception e) {
e.getMessage();
}
return aims;
}