如何动态读取数据库中某一表的字段信息

如何动态读取MYSQL中表的字段信息,或是表本身的信息

使用Hibernate3如何读,spring封闭的对hibernate操作的类,又该如何操作。基本思路是怎么的?

 

网上给的建议是:

    Connection connection = getConnection();
      // Create a result set
      Statement stmt = connection.createStatement();
      ResultSet rs = stmt.executeQuery("SELECT * FROM " + table);

      // Get result set meta data
      ResultSetMetaData rsmd = rs.getMetaData();
      int numColumns = rsmd.getColumnCount();

     rsmd.getColumnName(i)

 

    感觉好像不对,没有实验,但是为了读一个表的字段信息,就读出所有记录,未免有点小题大做了吧。

 

还在寻找思路

 

有人已经给出了答案,那就发扬一下“拿来主义”的精神吧

 

public String getTableName(Class clazz){ 
SessionFactory factory = getHibernateTemplate().getSessionFactory();         
AbstractEntityPersister classMetadata = (SingleTableEntityPersister)factory.getClassMetadata(clazz);    
return classMetadata.getTableName();  
} 

public List<String> getCellsName(Class clazz){ 
List<String> resultList = new ArrayList<String>();     
        SessionFactory factory = getHibernateTemplate().getSessionFactory();  
        AbstractEntityPersister classMetadata = (SingleTableEntityPersister)factory.getClassMetadata(clazz);   
        // 添加主键     
        resultList.addAll(Arrays.asList(classMetadata.getIdentifierColumnNames())); 
        String[] propertyNames = classMetadata.getPropertyNames();     
        for (String propertyName : propertyNames) {     
            // 判断是否一对多的对像,移除     
            boolean isCollection = classMetadata.getClassMetadata().getPropertyType(propertyName).isCollectionType(); 
            if (!isCollection) { 
                String[] propertyColumnNames = classMetadata.getPropertyColumnNames(propertyName); 
                for (String columnName : propertyColumnNames) { 
                    resultList.add(columnName);     
                } 
            } 
        } 
        return resultList; 
} 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值