问题描述及原因:
rs.getInt方法,若数据库中记录的数值为null,getInt返回的是数值“0”,而不是null!
long java.sql.ResultSet.getLong(String columnLabel)
int java.sql.ResultSet.getInt(String columnLabel)
等均为:“若数据库中记录的数值为null,返回数值“0”,而不是null”!
因此,
“category.setIsLeaf(rs.getInt("IS_LEAF"));”
执行后,category的isLeaf属性不可能为NULL
如想让category的isLeaf属性有NULL值,就需要其它处理了
jdk中的相关解释:
int java.sql.ResultSet.getInt(String columnLabel) throws SQLException
Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language.
Parameters:
columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
Returns:
the column value; if the value is SQL NULL, the value returned is 0
Throws:
SQLException - if the columnLabel is not valid; if a database access error occurs or this method is called on a closed result set
解决方案:
我个人是加上判断,代码如下:
ResultSet rs = statement.executeQuery("select Id from table");
Integer id = 0;
if (rs.getObject("Id") != null) {
id = rs.getInt("Id");
} else {
id = null;
}
通过获取对象来首先判断其是否为空,然后再用对应的getXXX方法得到具体的值。