现在有一个javabean,里面大概有70个字段如下temp1,temp2,temp3...接着就对应的70个get、set方法!
现在要往这个javabean存入数据,像这样javabean.setTemp1(i1)、javabean.setTemp2(i2)...
但是现在需要根据数据的多少,动态调用set方法存数据
例如:数据有5个,那么就调用javabean.setTemp1(i)、javabean.setTemp2(i)...到javabean.setTemp5(i);
数据有10个,那么就调用javabean.setTemp1(i)、javabean.setTemp2(i)...到javabean.setTemp10(i)这样求高手提出自己的宝贵意见,小弟不胜感激!
现在要往这个javabean存入数据,像这样javabean.setTemp1(i1)、javabean.setTemp2(i2)...
但是现在需要根据数据的多少,动态调用set方法存数据
例如:数据有5个,那么就调用javabean.setTemp1(i)、javabean.setTemp2(i)...到javabean.setTemp5(i);
数据有10个,那么就调用javabean.setTemp1(i)、javabean.setTemp2(i)...到javabean.setTemp10(i)这样求高手提出自己的宝贵意见,小弟不胜感激!
* 把req中的数据按照对象的属性取出来并set到对象当中并返回
* @param <E>
* @param req
* @param e
* @return <E>
*/
public static <E>E setParameter2JavaBean(HttpServletRequest req, E e){
Class<?> clazz = e.getClass();
Field[] fields = clazz.getDeclaredFields();
for(Field field : fields){
Class<?> typeClass = field.getType();
String value = req.getParameter(field.getName());
if(value != null && !"".equals(value)){
setValue(e, clazz, field, typeClass, value);
}
}
return e;
}
/**
* 调用set方法把值set到对象当中
* @param obj 指定对象
* @param clazz 对象的class
* @param field 需要设置值的field对象
* @param typeClass field的类型的class
* @param value 对应的值
*/
private static void setValue(Object obj, Class<?> clazz, Field field, Class<?> typeClass, String value){
String fieldName = field.getName();
String methodName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
try {
Method method = clazz.getDeclaredMethod(methodName, new Class[]{typeClass});
method.invoke(obj, new Object[]{getClassTypeValue(typeClass, value)});
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* 通过class类型获取获取对应类型的值
* @param typeClass class类型
* @param value 值
* @return Object
*/
private static Object getClassTypeValue(Class<?> typeClass, String value){
if(typeClass == int.class){
if(value.equals("")){
return 0;
}
return Integer.parseInt(value);
}else if(typeClass == short.class){
if(value.equals("")){
return 0;
}
return Short.parseShort(value);
}else if(typeClass == byte.class){
if(value.equals("")){
return 0;
}
return Byte.parseByte(value);
}else if(typeClass == double.class){
if(value.equals("")){
return 0;
}
return Double.parseDouble(value);
}else if(typeClass == boolean.class){
if(value.equals("")){
return false;
}
return Boolean.parseBoolean(value);
}else if(typeClass == float.class){
if(value.equals("")){
return 0;
}
return Float.parseFloat(value);
}else if(typeClass == long.class){
if(value.equals("")){
return 0;
}
return Long.parseLong(value);
}else {
return typeClass.cast(value);
}
}
}