____ResultSet__续__放分___附JDO的一个例子,__但是Reflection上有疑问
感谢各位在上个帖子的帮助和指点,
本人放分先谢大家,
不要怪我浮躁,现在真是箭在弦上,,
在网上找到了一个类似于 JDO的例子, 搞下来测试一下,但是有问题
例子
http://www.javaresearch.org/article/showarticle.jsp?column=108&thread=11522
Collection col = dao.findDatas("*","birthday is null",null,TeacherVO.class);
for (Iterator iter = col.iterator(); iter.hasNext(); ) {
Object item = iter.next();
System.out.println("item = " + item);
}
/**
这个测试没有问题,但是,一旦* 换成id ,只要是不能全部把所有field 放完的话,都要报错(在断点),我想知道为什么?
如果*正常,但是如果是id 等几个 数据 在断点报错
在下面的/******************断点***/处,这几句话,我不太懂,知道调用setId,将查询的数据方法Vo对象中去,,
public static Object toValueObject(Row row, Class type) throws Exception {
Object vo = type.newInstance(); //创建一个值对象
Field[] fields = type.getDeclaredFields(); //得到值对象中所有字段
for (int i = 0; i < fields.length; i++) {
String name = fields[i].getName(); //得到JavaBean的字段名
String nameInRow = toInRowName(name);//在此进行值对象名称到行对象名称的转换
Object value = row.get(nameInRow); //得到从数据库中取出的与字段名对应的值
String methodName = "set" + Character.toUpperCase(name.charAt(0)) +
name.substring(1); //得到setXXXX方法名
Class argClass = null;
/******************断点***/
if (value instanceof Class) {
argClass = (Class)value;
value = null;
}else{
argClass = value.getClass();
}
Method method = type.getMethod(methodName, new Class[] {argClass}); //得到set方法
method.invoke(vo, new Object[] {value});//调用setXXXX方法
}
/******************断点***/
return vo;
}