作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个包含几千行的大型 ResultSet
(来自 JDBC
查询)。使用这些行中的每一行,我必须实例化一个 Object
,根据此结果集的字段设置它的字段。现在,众所周知,如果该特定列为 null
JDBC API
的 getXXX()
方法将返回 0
。因此,对于每一行的每个字段,在我的 object
中设置值之前,我必须执行一个 wasNull()
,这看起来很丑陋,而且可能效率不高.那么,有没有其他方法可以避免呢?
除了 JDBC,如果有一些完全不同的、标准的、常用的方式,我也愿意了解。
谢谢!
编辑 1
patientInput.setRaceCodeId(patients.getShort("race_code_id"));
if(patients.wasNull())
patientInput.setRaceCodeId(null);
patients
是一个 ResultSet
。 patientInput
是一个对象
。这是我试图避免的代码。我的意思是,每次我执行 getXXX()
和 setXXX()
时,我都必须再次检查我从 ResultSet
中得到了什么不是 null
。如果是,则将该对象字段设置为 null
,因为在这种情况下 getXXX()
返回 0
。
最佳答案
好的。我相信有两种可能的方法来“整理”您的代码。然而,这可能归结为关于什么是整洁的意见分歧!
解决方案 1 - 将 getXXX() 替换为返回 null 的 getObject(),例如
Short s = (Short)patients.getObject("race_code_id");
patientInput.setRaceCodeId(s);
解决方案 2 - 编写一个通用包装器方法来检索可为 null 的值
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));
关于mysql - 有没有办法避免 wasNull() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332090/
我是一名优秀的程序员,十分优秀!