有没有办法避免wasNull()方法?

| 我有一个数千行的大
ResultSet
(从ѭ1get查询中获得)。使用这些行中的每一行,我都必须实例化一个
Object
,并根据此结果集的字段设置它的字段。现在,众所周知,如果特定列为
null
,则此
JDBC API
getXXX()
方法将返回
0
。因此,对于每一行的每个字段,在设置value8ѭ中的值之前,我都必须先执行
wasNull()
,这看起来很难看,而且效率也不高。那么,还有其他方法可以避免它吗? 除JDBC外,如果有一些完全不同的,标准的,常用的方法,我也很乐意了解。 谢谢! 编辑1
patientInput.setRaceCodeId(patients.getShort(\"race_code_id\"));  
if(patients.wasNull())
    patientInput.setRaceCodeId(null);
patients
ResultSet
patientInput
object
。这是我要避免的代码。我的意思是,每次我做
getXXX()
,然后做
setXXX()
,我都必须再次检查从
ResultSet
得到的不是not6ѭ。如果是,则将该对象字段设置为
null
,因为在这种情况下
getXXX()
返回
0
。     
已邀请:
        好。我相信有两种方法可以“整理”您的代码。但是,这可能归结为关于什么是整洁的意见分歧! 解决方案1-将getXXX()替换为getObject(),该方法返回null
Short s = (Short)patients.getObject(\"race_code_id\");
patientInput.setRaceCodeId(s); 
解决方案2-编写一个通用包装方法来检索可为空的值
protected final <T> T getNullableValue(T returnType, String colName, ResultSet rs) throws SQLException {  
  Object colValue = rs.getObject(colName);  
  return (T) colValue;  
}

final static Integer INT = 0;
final static Short SHORT = 0;
.
.
.
patientInput.setRaceCodeId(getNullableValue(SHORT,\"race_code_id\",patients));
    
        您不必对每个字段都执行此操作,只需对数字字段(可能是布尔值)并且在数据库中声明为可为空的字段执行此操作。它的发生不如您担心的那么频繁。 如果您绝对不喜欢编写这样的代码,则可以尝试切换到ORM库,例如Hibernate。     

要回复问题请先登录注册