现在的位置: 首页 > 综合 > 正文

GetGeneratedKeysHelper 与反射

2011年12月01日 ⁄ 综合 ⁄ 共 661字 ⁄ 字号 评论关闭

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

例如:

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(...)呢?

抱歉!评论已关闭.