GetGeneratedKeysHelper 与反射

此类中用了最基本的一些反射方法,应该说是检验反射功底的好东西。

例如:

RETURN_GENERATED_KEYS = Statement.class.getDeclaredField("RETURN_GENERATED_KEYS").getInt(PreparedStatement.class);

跟 PreparedStatement.RETURN_GENERATED_KEYS 是不一样的。

前者可以动态找到运行时参数的当前值,而后者得到的只是硬编码时的初始值。


另外,还有一个不明白的就是,代码中使用了:

PREPARE_STATEMENT_METHOD = Connection.class.getMethod( "prepareStatement"new Class[] {String.class, Integer.TYPE} );
public static PreparedStatement prepareStatement(Connection conn, String sql) throws SQLException {
  Object[] args 
= new Object[] { sql, new Integer(RETURN_GENERATED_KEYS) } ;
  
// 
   return (PreparedStatement) PREPARE_STATEMENT_METHOD.invoke(conn, args);
  }


为什么不直接使用conn.prepareStatement(...)呢?
posted on 2005-01-29 15:39  Na57  阅读(556)  评论(0编辑  收藏  举报