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

我有一个大的ResultSet(从JDBC查询中获取)几千行.使用这些行中的每一行,我都必须实例化一个Object,根据此结果集的字段设置它的字段.现在,众所周知,如果该特定列为空,则此JDBC API的getXXX()方法将返回0.因此,对于每一行的每个字段,在设置对象中的值之前,我都必须先执行wasNull(),这看起来很难看,而且效率也不高.那么,还有其他方法可以避免它吗?

除JDBC外,如果有一些完全不同的,标准的,常用的方法,我也很乐意了解.

谢谢!

编辑1

patientInput.setRaceCodeId(patients.getShort("race_code_id"));  
if(patients.wasNull())
    patientInput.setRaceCodeId(null);

患者是一个ResultSet. PatientInput是一个对象.这是我要避免的代码.我的意思是,每次我执行getXXX()和setXXX()时,都必须再次检查从ResultSet获得的结果是否不为null.如果是,则将该对象字段设置为null,因为在这种情况下getXXX()返回0.

解决方法:

好.我相信有两种可能的方法来“整理”您的代码.但是,这可能归结为关于什么是整洁的意见分歧!

解决方案1-将getXXX()替换为getObject(),该方法返回空值,例如

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));
上一篇:小菜鸟之servlet


下一篇:java-Statement.executeQuery()对SELECT语句返回什么