利用java映射自动封装javabean代码块,及注意事项
public static List《object》 getBeanFormCacheRowSet(Class clazz,ResultSet rest) {
List《object》 result = new ArrayList《object》();//List《object》
ResultSetMetaData md;
try {
md = rest.getMetaData(); //获取metadata
int columCount = md.getColumnCount(); //获取set行数:即属性的个数
Object obj = null;
while (rest.next()) { //创建实例
obj = clazz.newInstance();
for(int i=1;i<=columCount;i++){ //按照对象属性数遍历,注意i的范围
if(rest.getObject(i) == null){ //排除null
continue;
}
//格式转化
String className = md.getColumnClassName(i);
if("java.sql.Timestamp".equals(className)||"java.sql.Date".equals(className)){
className = "java.sql.Timestamp";
}else if("java.sql.Time".equals(className)){
className = "java.lang.String";
}
else if("java.lang.Byte".equals(className)){
className = "java.lang.Integer";
}
String methodName = "set"+md.getColumnName(i).substring(0,1).toUpperCase() +md.getColumnName(i).substring(1);
try{
clazz.getMethod(methodName,Class.forName(className)).invoke(obj, rest.getObject(i));
}
catch(NoSuchMethodException e){
//System.out.println("特殊类型字段导致表字段与JavaBean属性不对应!没有找到参数类型是["+className +"]的SETER方法:"+ methodName);
continue;
}
}
result.add(obj);
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return result;
}
}