拜托各位高手帮忙:
    现在我的需求是这样的,根据数据库查询所有的表,根据表名动态创建一个标准的JavaBean,属性就为该表的字段,有get,set方法,我现在已经有表名、所有字段名,该表所有记录,请问该怎么动态创建?急!

解决方案 »

  1.   

    你这个与Java反射有啥关系啊。你难道是在内存中动态生成Bean ?还是要生成一个.java的文件?
    如果是前者,那估计是不可能的了。
    如果仅生成.java文件的Bean。很多数据库影射工具都能做到了,如我们常用的MyEclipse就支持这个功能,而且不但能生成Bean,连基本的增删改查的DAO都可以自动生成。
      

  2.   

    select 
    column_name as COLUMN_NAME,
    data_type as TYPE_NAME,
    isnull(character_maximum_length,0) as COLUMN_SIZE 
    from information_schema.columns  
    where table_name = '"+tables+"'
    利用information_schema.column查出某表的属生用java生成文件:
    String createProcedure = String.valueOf(ProStr);
     
    // .SQL
    OutputStream os = new FileOutputStream(new File(filepath+procedurename+".sql"));
    OutputStreamWriter osw = new OutputStreamWriter(os);
    osw.write(createProcedure);
    osw.close();
      

  3.   

    是在内存中动态生成Bean,不可能只能找别的方法了,谢谢了!
      

  4.   

    这个高难度吧
    hibernate能做这个吧?
      

  5.   

    必须先有类定义,再有类对象啊?class dbObject
    {
        String tableName;
        String[] columnNames;
        String[] values;    。
    }此类可以搞定所有的数据表字段(不包括LOB)
    然后初始化时查出全部数据表,按表构造对象即可
      

  6.   

    class dbObject
    {
        String tableName;
        String[] columnNames;
        String[] values;    。
    } get/set
    可以变化为 get(name)
    set(name,value)
      

  7.   

    动态生成类并非不可能,但是这个意义不大。即使你生成了这个类,你其它代码又怎么知道它有多少getter/setter呢?外面的类的调用老用反射又非常累,直接定义一个get(String propName) set(String propName, Object value)这样的接口实际
      

  8.   


    很感谢,我是在自己学习Struts2+ExtJs来做一个类似于数据库管理工具的页面,填入服务器IP,username,password,dbName,就会出现一个动态的combobox,其选项就是该数据库的所有的表,至此是我已经完成的,在下拉列表选择一个表后,会出现该表的所有数据,这部分我是模仿网上的,从struts的action中传数据给ExtJs,必须是一个包含list的对象,这个list就是放的查出来的对象的,但是查出来的对象是动态生成的,对应于数据库中的一个表。说的有点乱,不过还是希望得到帮助,谢谢!
      

  9.   

    如果table,entity都是确定的,没必要用什么反射List<T> list = new ArrayList<T>();
    while(rs.next){
       T t = new T();
       t.setXXX(rs.getXXX(1));
       ...
    }
      

  10.   

    上面忘写list.add();了,呵呵如果不确定,反射块不太清楚的话,建议用hibernate
    如果是准备学反射
    ResultSetMetaData肯定要用到的
    另外就看API啦,要用的东西比较多
      

  11.   

    cglib 可以使用 BeanGenerator 根据字符串创建动态的类。在 Apache Commons BeanUtils 也有类似的工具类。参考:http://topic.csdn.net/u/20080523/09/85085065-4f76-4c43-a565-d92f2d32fbb6.html