开源组件:(4)用元数据和BeanUtils写一个简单的ORM映射BaseDAO.java

  

1, JDBC元数据

在JDBC中可以使用:数据库元数据,参数元数据,结果集元数据


(1)数据库元数据

通过连接对象的getMetaData()方法可以得到DatabaseMetaData对象.DatabaseMetaData对象包含了数据库的元信息。


DatabaseMetaData java.sql.Connection.getMetaData (),

检索DatabaseMetaData对象包含关于数据库的元数据。元数据包含关于数据库的表的信息,其支持的SQL语法,它的存储过程,此连接的功能,所以>一个对象,可以用来获取信息的类型和属性为每个参数标记PreparedStatement对象。


通过ParameterMetaData对象的getParameterCount()方法可以获得PreparedStatement对象中的参数个数。

int java.sql.ParameterMetaData.getParameterCount (),

PreparedStatement对象检索参数的数量。



(3)结果集元数据

通过ResultSet对象的getMetaData()方法得到ResultSetMetaData对象。

ResultSetMetaData java.sql.ResultSet.getMetaData ()

检索数量、类型和属性的ResultSet对象的列。



java.sql。ResultSetMetaData

一个对象,可以用来获取信息的类型和属性列在ResultSet对象只



1.1,数据库元数据

package  com.rk.metadata;      import  java.sql.Connection;   import  java.sql.DatabaseMetaData;   import  java.sql.SQLException;      import  com.rk.utils.JDBCUtil;//1只数据库元数据   public  class  Demo01   {   public  static  void  main (String [], args), throws  SQLException异常   {//,获取连接   Connection  conn =, JDBCUtil.getConnection ();//,获取数据库元数据   DatabaseMetaData  metaData =, conn.getMetaData ();//, alt  +, shift  +, L ,快速获取方法返回值      System.out.println (“DatabaseProductName:“, +, metaData.getDatabaseProductName());//返回数据库的产品名称。   System.out.println (“DatabaseProductVersion:“, +, metaData.getDatabaseProductVersion());//返回数据库的版本号   System.out.println (“DriverName:“, +, metaData.getDriverName());//返回驱动驱动程序的名称   System.out.println (“getDriverVersion:“, +, metaData.getDriverVersion());//返回驱动程序的版本号   System.out.println (“URL:”, +, metaData.getURL());//返回一个字符串类对象,代表数据库的URL   System.out.println("用户名:",+,metaData.getUserName());//返回连接当前数据库管理系统的用户名   System.out.println(“只读的:“,+,metaData.isReadOnly());//返回一个布尔值,指示数据库是否只允许读操作      JDBCUtil.closeQuietly(康涅狄格州);   }   }


1.2,参数元数据

package  com.rk.metadata;      import  java.sql.Connection;   import  java.sql.ParameterMetaData;   import  java.sql.PreparedStatement;   import  java.sql.SQLException;      import  com.rk.utils.JDBCUtil;//2只参数元数据   public  class  Demo02   {   public  static  void  main (String [], args), throws  SQLException异常   {//,获取连接   Connection  conn =, JDBCUtil.getConnection ();//SQL   String  sql =, " SELECT  *,得到T_Dogs  WHERE  Name=?,以及Age> ?”;      PreparedStatement  pstmt =, conn.prepareStatement (sql);//,参数元数据   ParameterMetaData  ParameterMetaData =, pstmt.getParameterMetaData ();//,获取参数的个数   int  count =, parameterMetaData.getParameterCount ();   System.out.println(“数:”,+,数);      JDBCUtil.closeQuietly (pstmt);   JDBCUtil.closeQuietly(康涅狄格州);   }   }


1.3,结果集元数据

package  com.rk.metadata;      import  java.sql.Connection;   import  java.sql.PreparedStatement;   import  java.sql.ResultSet;   import  java.sql.ResultSetMetaData;   import  java.sql.SQLException;      import  com.rk.utils.JDBCUtil;//3只结果集元数据   public  class  Demo03   {   public  static  void  main (String [], args), throws  SQLException异常   {//,获取连接   Connection  conn =, JDBCUtil.getConnection ();   String  sql =, " SELECT  *,得到T_Dogs”;   PreparedStatement  pstmt =, conn.prepareStatement (sql);   ResultSet  rs =, pstmt.executeQuery ();//,得到结果集元数据(目标:通过结果集元数据,得到列的名称)   ResultSetMetaData  rs_metaData =, rs.getMetaData ();//,迭代每一行结果   而(rs.next ())   {//,1只获取列的个数   int  count =, rs_metaData.getColumnCount ();//,2只遍历,获取每一列的列的名称   (int  i=0; i

开源组件:(4)用元数据和BeanUtils写一个简单的ORM映射BaseDAO.java