在Spring JdbcTemplate

时间:2017-03-03 12:34:15

标签: java spring jdbc jdbctemplate

我正在研究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) {
......
.....

这背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

在搜索该主题后,我意识到了;

可能是由于缺少Metadata对象,因此提供了有关参数名称的信息。

将要注册的输出参数名传递给存储过程是可选的(可以通过索引注册输出参数),并且从可调用语句返回的ParameterMetaData对象不返回输出参数的名称。

弹簧;但请填写参数名称的地图(它要求用户在使用自己的API创建输出参数时设置)和参数值。