如何解决有没有办法避免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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。