自问自答:高手指点了下原来BeanUtils.copyProperties(entity,row);进行拷贝的时候要求数据库中的字段和实体中的属性名称相同。否则报错。

解决方案 »

  1.   

    有好几种工具可以实现Bean to Bean的,貌似好多是通过配置文件来实现的,有的不需要两个属性名字必须相同,只需要配置对应关系就可以了,不过觉得有些麻烦。小弟最近也在探讨一种Bean To Bean的赋值方案,不知道各位高人还有什么解决办法,BeanUtils的方式应该是效率不高的吧。
      

  2.   

    今天又看见一个帖子用反射作的。可是发现一个问题:
    List<Student> students = new ArrayList<Student>();
    rs = pStmt.executeQuery();
    String recode="";
    Object object = "";
    ResultSetMetaData rsmd = rs.getMetaData();
    int clmnCount = rsmd.getColumnCount();
    while(rs.next()){
    object = StudentDemo.class.newInstance();
    for(int i=1; i<=clmnCount; i++){
    if(rs.getString(rsmd.getColumnName(i))!= null){
    recode = rs.getString(rsmd.getColumnName(i));
    System.out.println(recode);
    }else{
    recode = "";
    }
    Method m =object.getClass().getMethod(getSetMethodName(rsmd.getColumnName(i)), new Class[]{recode.getClass()});
    m.invoke(object, new Object[]{recode});
    }
    students.add((Student)object);
    }
    recode = rs.getString(rsmd.getColumnName(i));取出的都是String类型。在后面的recode.getClass()则抱错说找不到getTime(java.lang.String)这个函数,可是实体类中的这个函数参数是Date类型。所以无法实现。不知道那位高手又好的解决办法。
      

  3.   

    DynaBean  是继承ResultSet吗? ResultSet.next是个数据结构,不知道这种怪异的写法干什么?
      

  4.   

    看看apache的dozer吧,也是bean - to -bean的。
    属性名,类型可以不同,可以是自定义类类型。。
    很不错的。