switch (jdbcType) { case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: value = resultSet.getString(columnName); break; case Types.NUMERIC: case Types.DECIMAL: value = resultSet.getBigDecimal(columnName); break; case Types.BIT: value = new Boolean(resultSet.getBoolean(columnName)); break; case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: value = new Integer(resultSet.getInt(columnName)); break; case Types.BIGINT: value = new Long(resultSet.getLong(columnName)); break; case Types.REAL: value = new Float(resultSet.getFloat(columnName)); break; case Types.FLOAT: case Types.DOUBLE: value = new Double(resultSet.getDouble(columnName)); break; case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: value = resultSet.getBytes(columnName); break; case Types.DATE: value = resultSet.getDate(columnName); break; case Types.TIME: value = resultSet.getTime(columnName); break; case Types.TIMESTAMP: value = resultSet.getTimestamp(columnName); break; case Types.CLOB: Clob clob = resultSet.getClob(columnName);  if ((clob == null) || (clob.length() > Integer.MAX_VALUE)) { value = clob; } else { value = clob.getSubString(1l, (int)clob.length()); } break; case Types.BLOB: Blob blob = resultSet.getBlob(columnName);  if ((blob == null) || (blob.length() > Integer.MAX_VALUE)) { value = blob; } else { value = blob.getBytes(1l, (int)blob.length()); } break; case Types.ARRAY: value = resultSet.getArray(columnName); break; case Types.REF: value = resultSet.getRef(columnName); break; default:  if (Jdbc3Utils.supportsJava14JdbcTypes() && (jdbcType == Jdbc3Utils.determineBooleanTypeCode())) { value = new Boolean(resultSet.getBoolean(columnName)); } else { value = resultSet.getObject(columnName); } break; }
value = extractColumnValue(resultSet, columnName, jdbcType);
    protected Object getObjectFromResultSet(ResultSet resultSet, String columnName, Table table) throws SQLException    {        Column column = (table == null ? null : table.findColumn(columnName, getPlatformInfo().isCaseSensitive()));        Object value  = null;        if (column != null)        {            int originalJdbcType = column.getTypeCode();            int targetJdbcType   = getPlatformInfo().getTargetJdbcType(originalJdbcType);            int jdbcType         = originalJdbcType;            // in general we're trying to retrieve the value using the original type            // but sometimes we also need the target type:            if ((originalJdbcType == Types.BLOB) && (targetJdbcType != Types.BLOB))            {                // we should not use the Blob interface if the database doesn't map to this type                 jdbcType = targetJdbcType;            }            if ((originalJdbcType == Types.CLOB) && (targetJdbcType != Types.CLOB))            {                // we should not use the Clob interface if the database doesn't map to this type                 jdbcType = targetJdbcType;            }            switch (jdbcType)            {                case Types.CHAR:                case Types.VARCHAR:                case Types.LONGVARCHAR:                    value = resultSet.getString(columnName);                    break;                case Types.NUMERIC:                case Types.DECIMAL:                    value = resultSet.getBigDecimal(columnName);                    break;                case Types.BIT:                    value = new Boolean(resultSet.getBoolean(columnName));                    break;                case Types.TINYINT:                case Types.SMALLINT:                case Types.INTEGER:                    value = new Integer(resultSet.getInt(columnName));                    break;                case Types.BIGINT:                    value = new Long(resultSet.getLong(columnName));                    break;                case Types.REAL:                    value = new Float(resultSet.getFloat(columnName));                    break;                case Types.FLOAT:                case Types.DOUBLE:                    value = new Double(resultSet.getDouble(columnName));                    break;                case Types.BINARY:                case Types.VARBINARY:                case Types.LONGVARBINARY:                    value = resultSet.getBytes(columnName);                    break;                case Types.DATE:                    value = resultSet.getDate(columnName);                    break;                case Types.TIME:                    value = resultSet.getTime(columnName);                    break;                case Types.TIMESTAMP:                    value = resultSet.getTimestamp(columnName);                    break;                case Types.CLOB:                    Clob clob = resultSet.getClob(columnName);                    if ((clob == null) || (clob.length() > Integer.MAX_VALUE))                    {                        value = clob;                    }                    else                    {                        value = clob.getSubString(1l, (int)clob.length());                    }                    break;                case Types.BLOB:                    Blob blob = resultSet.getBlob(columnName);                    if ((blob == null) || (blob.length() > Integer.MAX_VALUE))                    {                        value = blob;                    }                    else                    {                        value = blob.getBytes(1l, (int)blob.length());                    }                    break;                case Types.ARRAY:                    value = resultSet.getArray(columnName);                    break;                case Types.REF:                    value = resultSet.getRef(columnName);                    break;                default:                    // special handling for Java 1.4/JDBC 3 types                    if (Jdbc3Utils.supportsJava14JdbcTypes() &&                        (jdbcType == Jdbc3Utils.determineBooleanTypeCode()))                    {                        value = new Boolean(resultSet.getBoolean(columnName));                    }                    else                    {                        value = resultSet.getObject(columnName);                    }                    break;            }        }        else        {            value = resultSet.getObject(columnName);        }        return value;    }