我正在研究SpringJdbc代码并注意到,当spring想要从输出参数中提取结果时,它直接使用类型unsafe方法getObject(int index)
:
Object out = cs.getObject(sqlColIndex);
但是,为了从结果集中提取结果,他们wrote more code尝试找出确切的类型:
public static Object getResultSetValue(ResultSet rs, int index, Class<?> requiredType) throws SQLException {
if (requiredType == null) {
return getResultSetValue(rs, index);
}
Object value;
// Explicitly extract typed value, as far as possible.
if (String.class == requiredType) {
return rs.getString(index);
}
else if (boolean.class == requiredType || Boolean.class == requiredType) {
value = rs.getBoolean(index);
}
else if (byte.class == requiredType || Byte.class == requiredType) {
......
.....
这背后的原因是什么?
答案 0 :(得分:0)
在搜索该主题后,我意识到了;
可能是由于缺少Metadata对象,因此提供了有关参数名称的信息。
将要注册的输出参数名传递给存储过程是可选的(可以通过索引注册输出参数),并且从可调用语句返回的ParameterMetaData对象不返回输出参数的名称。
弹簧;但请填写参数名称的地图(它要求用户在使用自己的API创建输出参数时设置)和参数值。