写一个通用java注值的方法,使用泛型T,将其封装在DbHelp中(相信DbHelper不用我解释是什么),使dao调用直接获取所需要的对象,也正应用了我们java面向对象的思想
public static<T> T getBean(String sql,Class<T> clazz){
Method[] ms=clazz.getDeclaredMethods();
T t=null;
try {
t=clazz.newInstance();
for (Method m : ms) {
String mn=m.getName();
if(mn.startsWith("set")){
Object obj=map.get((mn.replace("set", "").toUpperCase()));//取到set方法对应数据库字段的值
String pt=m.getParameterTypes()[0].toString();//取到set方法的参数类型
if(obj!=null){
if(pt.endsWith("int")||pt.endsWith("Integer")){
m.invoke(t, ((BigDecimal)obj).intValue());
}else if(pt.endsWith("Double")||pt.endsWith("double")){
m.invoke(t, ((BigDecimal)obj).doubleValue());
}else if(pt.endsWith("Date")){
m.invoke(t, (Timestamp)obj);
}else {
m.invoke(t, obj);
}
}
}
}
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}