7
JDBC ResultSet提供了getObject,getInt,getString等方法,並且PreparedStatement有類似的setter。除了類型編譯時類型的安全性,類型特定的getters/setter是否具有任何(dis)優勢,還是可以在任何地方使用getObject/setObject?JDBC get/setObject與get/setSpecificType
JDBC ResultSet提供了getObject,getInt,getString等方法,並且PreparedStatement有類似的setter。除了類型編譯時類型的安全性,類型特定的getters/setter是否具有任何(dis)優勢,還是可以在任何地方使用getObject/setObject?JDBC get/setObject與get/setSpecificType
沒有真正的技術(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]);
}
}