如果不用MVC框架的时候可能会用到。
strClassName需要包名加类名,也可以使用Class这样的参数,传进去,根据自己喜好来
HashMap<String,Object> mapParms,这里我第二个没有使用String,为了用的地方可以更多,前台的参数可以用遍历的方法都放进去,不影响。
public static Object refClass(String strClassName,HashMap<String,Object> mapParms){
Object obj=null;
//获取对应的Class
//创建对象的实例
try {
Class cls = Class.forName(strClassName);
obj = cls.getConstructor(null).newInstance();
//获取Class对象里面所有的属性
Field[] fields = cls.getDeclaredFields();
//遍历属性 并且依次赋值
for (int i = 0; i < fields.length; i++) {
String fieldName = fields[i].getName();
//如果是String
if(fields[i].getType()==java.lang.String.class ){
String formValue = (String) mapParms.get(fieldName);
if (!"".equals(formValue)&&formValue != null) {
//获取对应的set方法
String setMethod = ReflClass.setMethodForFieldName(fieldName);
Method method = cls.getMethod(setMethod, fields[i].getType());
//执行set方法,将值存入对象中
method.invoke(obj, formValue);
}
}else if(fields[i].getType()==java.util.Date.class){
//如果是date
Date formValue = (java.util.Date) mapParms.get(fieldName);
if (!"".equals(formValue)&&formValue != null) {
//获取对应的set方法
String setMethod = ReflClass.setMethodForFieldName(fieldName);
Method method = cls.getMethod(setMethod, fields[i].getType());
//执行set方法,将值存入对象中
method.invoke(obj, formValue);
}
}else if(fields[i].getType()==java.lang.Integer.class){
//如果是Integer
Integer formValue = (java.lang.Integer) mapParms.get(fieldName);
if (!"".equals(formValue)&&formValue != null) {
//获取对应的set方法
String setMethod = ReflClass.setMethodForFieldName(fieldName);
Method method = cls.getMethod(setMethod, fields[i].getType());
//执行set方法,将值存入对象中
method.invoke(obj, formValue);
}
}else if(fields[i].getType()==java.lang.Double.class){
//如果是Integer
Double formValue = (java.lang.Double) mapParms.get(fieldName);
if (!"".equals(formValue)&&formValue != null) {
//获取对应的set方法
String setMethod = ReflClass.setMethodForFieldName(fieldName);
Method method = cls.getMethod(setMethod, fields[i].getType());
//执行set方法,将值存入对象中
method.invoke(obj, formValue);
}
}else if(fields[i].getType()==java.util.List.class){
//如果是Integer
List formValue = (java.util.List) mapParms.get(fieldName);
if (!"".equals(formValue)&&formValue != null) {
//获取对应的set方法
String setMethod = ReflClass.setMethodForFieldName(fieldName);
Method method = cls.getMethod(setMethod, fields[i].getType());
//执行set方法,将值存入对象中
method.invoke(obj, formValue);
}
}else if(fields[i].getType()==java.util.Map.class){
//如果是Integer
Map formValue = (java.util.Map) mapParms.get(fieldName);
if (!"".equals(formValue)&&formValue != null) {
//获取对应的set方法
String setMethod = ReflClass.setMethodForFieldName(fieldName);
Method method = cls.getMethod(setMethod, fields[i].getType());
//执行set方法,将值存入对象中
method.invoke(obj, formValue);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
public static String setMethodForFieldName(String fieldName){
return "set"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
}
strClassName需要包名加类名,也可以使用Class这样的参数,传进去,根据自己喜好来
HashMap<String,Object> mapParms,这里我第二个没有使用String,为了用的地方可以更多,前台的参数可以用遍历的方法都放进去,不影响。