我有一个大的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));