可以做长页海报的网站,安阳网络教研平台首页,肥城市建设局网站,化工建设信息网站在使用Hibernate时#xff0c;我们都用到了反向工程技术#xff0c;即可根据一个已经存在的表#xff0c;自动的生成Class类及映射文件#xff0c;那么java是怎么知道数据库的表的结构的呢#xff1f; 这就是DataBase MetaData所起的作用. 第一个概念“元数据”: 即数据的…   在使用Hibernate时我们都用到了反向工程技术即可根据一个已经存在的表自动的生成Class类及映射文件那么java是怎么知道数据库的表的结构的呢 这就是DataBase MetaData所起的作用. 第一个概念“元数据”: 即数据的数据. 我们来看一个案例: 
1. 新建一个数据库: 
create database metadatatest;  use metadatatest;   create table student(     id int primary key auto_increment,     name varchar(50) not null )  select * from student; 2. 创建一个java程序来读取这个表的信息: public static void main(String[] args)throws Exception {        Connection connull;        DatabaseMetaData mnull;         Class.forName(com.mysql.jdbc.Driver);         conDriverManager.getConnection(jdbc:mysql://localhost:3306/metadatatest,root,a);                  //获取数据库元信息         mcon.getMetaData();         //取得数据库信息         ResultSet rsm.getTables(null, null,null, new String[]{TABLE});         //循环输出数据库信息         while(rs.next()){             System.out.println(数据库名:rs.getString(TABLE_CAT));             System.out.println(模式:rs.getString(TABLE_SCHEM));                         System.out.println(表的名字:rs.getString(TABLE_NAME));             System.out.println(类型:rs.getString(TABLE_TYPE));             System.out.println(注释:rs.getString(REMARKS));         }         System.out.println(************************************);         //取出student表中的字段信息         rsm.getColumns(null, null, student, null);         while(rs.next()){             System.out.print(列名:rs.getString(COLUMN_NAME)/t);             System.out.print(列数据类型:rs.getString(DATA_TYPE)/t);             System.out.print(列数据长度:rs.getString(COLUMN_SIZE)/t);             System.out.print(列默认值:rs.getString(COLUMN_DEF)/t);             System.out.println();         }                 rs.close();         con.close();            }