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