JDBC get / setObject与get / setSpecificType

时间:2010-03-30 06:31:59

标签: java jdbc types

JDBC ResultSet提供了getObject,getInt,getString等方法,PreparedStatement提供了类似的setter。除了类型编译时类型安全之外,类型特定的getter / setter是否具有任何(dis)优势,或者可以在任何地方使用getObject / setObject吗?

1 个答案:

答案 0 :(得分:5)

没有真正的技术(dis)优势。如果您之后正在进行类型检查/投射,它们可能仅在功能上不利。

我自己只在返回的值是一个原语时才使用ResultSet#getObject(),这个原语被DB默认为NULL,并且声明的值是原语的包装器。例如。 Integer age

user.setAge(resultSet.getObject("age") != null ? resultSet.getInt("age") : null);

我实际上一直在实用方法中使用PreparedStatement#setObject()

public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException {
    for (int i = 0; i < values.length; i++) {
        preparedStatement.setObject(i + 1, values[i]);
    }
}