gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:07:53 25 4
gpt4 key购买 nike

我有一个包含几千行的大型 ResultSet(来自 JDBC 查询)。使用这些行中的每一行,我必须实例化一个 Object,根据此结果集的字段设置它的字段。现在,众所周知,如果该特定列为 null JDBC APIgetXXX() 方法将返回 0。因此,对于每一行的每个字段,在我的 object 中设置值之前,我必须执行一个 wasNull(),这看起来很丑陋,而且可能效率不高.那么,有没有其他方法可以避免呢?

除了 JDBC,如果有一些完全不同的、标准的、常用的方式,我也愿意了解。

谢谢!

编辑 1

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

patients 是一个 ResultSetpatientInput 是一个对象。这是我试图避免的代码。我的意思是,每次我执行 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com