今天做一个项目因为bean中的property有点多就想到了用apache的BeanUtils的copyProperties,因为之前用过就轻车熟路了,但是当运行程序时始终复制不成功,看代码好多遍确定代码没有问题,就想到是不是jar包中的源码的问题,于是从网上下了源码包来看,用debug跟,最后终于发现问题
public List<Object> mapRow(ResultSet res) throws Exception{
List<Object> list = new ArrayList<Object>();
Iterator rows = null;
rows = (new ResultSetDynaClass(res)).iterator();
//while(res.next()) {System.out.println(res.getString(2));}
while(rows.hasNext()) {
System.out.println("-------------------------------------");
//System.out.println(rows.next());
Child child = new Child();
DynaBean row = (DynaBean) rows.next();
BeanUtils.copyProperties(child, row);
System.out.println("2---" + child.getChildid());
list.add(child);
}
return list;
}
以上方法正确,当执行rows = (new ResultSetDynaClass(res)).iterator();时,从数据库取出的column名被自动全部转换为小写,使它不能与类中的属性名相匹配。最后导致遍历失败