Java 如何在Postgresql JDBC中的PreparedStatement中添加参数,而无需手动设置类型

Java 如何在Postgresql JDBC中的PreparedStatement中添加参数,而无需手动设置类型,java,postgresql,jdbc,Java,Postgresql,Jdbc,这可能吗?我们使用的是PreparedStatementSetter,代码中充满了类似preparedStatement.setString(4,“string”) 我们有很多专栏,所以这很不幸。似乎应该可以通过各种元数据JDBC方法实现,因此我假设已经完成了(只是半开玩笑) 我们使用Spring3.0和PGJDBC9.1-903,让JDBC驱动程序自己识别参数的类型 例如,做 preparedStatement.setObject(4,"string"); 最终会执行 preparedSta

这可能吗?我们使用的是PreparedStatementSetter,代码中充满了类似
preparedStatement.setString(4,“string”)

我们有很多专栏,所以这很不幸。似乎应该可以通过各种元数据JDBC方法实现,因此我假设已经完成了(只是半开玩笑)

我们使用Spring3.0和PGJDBC9.1-903,让JDBC驱动程序自己识别参数的类型

例如,做

preparedStatement.setObject(4,"string");
最终会执行

preparedStatement.setString(4,"string");
您甚至可以创建一个方法来插入参数。以下是一个基本示例:

public void addParameters(PreparedStatement pstmt, Object ... parameters)
    throws SQLException {
    int paramIndex = 1;
    for (Object param : parameters) {
        pstmt.setObject(paramIndex++, param);
    }
}
只需通过以下方式设置参数:

PreparedStatement preparedStatement = ...
addParameters(preparedStatement, 1, "string", new java.util.Date());

DAO类是否可能/可接受?JdbcTemplate?是的,基本上只是JdbcTemplate,尽管我可能会把它塞进SimpleJDBCTemplate中,而setObject相对于SetOmenativeType的开销只支付一次,在语句创建过程中-对吗?@alex我从来没有因为使用这种方法而在应用程序中产生过开销。如果您有瓶颈,请使用探查器来发现它,而不是假设问题可能在哪里。