【发布时间】:2010-03-30 19:52:01
【问题描述】:
JDBC ResultSet 提供 getObject、getInt、getString 等方法,PreparedStatement 有类似的设置器。除了类型编译时类型安全之外,特定类型的 getter/setter 是否有任何(不利)优势,或者是否可以在任何地方使用 getObject/setObject?
【问题讨论】:
JDBC ResultSet 提供 getObject、getInt、getString 等方法,PreparedStatement 有类似的设置器。除了类型编译时类型安全之外,特定类型的 getter/setter 是否有任何(不利)优势,或者是否可以在任何地方使用 getObject/setObject?
【问题讨论】:
没有真正的技术(缺点)优势。如果您之后自己进行类型检查/强制转换,它们可能只会在功能上处于不利地位。
我自己仅在返回值是 DB 默认为 NULL 的原语并且声明的值是原语的包装器时才使用 ResultSet#getObject()。例如。 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]);
}
}
【讨论】: