您的位置:首页 > 其它

文章标题

2016-12-12 16:52 267 查看

利用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;
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: