Java JDBC ResultSet对象类型映射没有字节或短字符?为什么只有整数?

Java JDBC ResultSet对象类型映射没有字节或短字符?为什么只有整数?,java,postgresql,jdbc,mapping,resultset,Java,Postgresql,Jdbc,Mapping,Resultset,你好。有人能解释为什么JDBC没有为某些类型实现对象映射吗。例如,Postgres JDBC没有字节和短映射。我可以得到基本字节和短字符,但在对象格式中,我只能得到整数 这是源代码 字节和短对象类型有什么问题?如何使用TINYINT、SMALLINT等 实现getByte和getShort类似于有什么问题?答案在 第187页 注意–JDBC1.0规范定义了 SMALLINT和TINYINT JDBC类型必须是整数。Java语言 在JDBC 1.0版本中未包含字节和短数据类型 规范最终确定。SMA

你好。有人能解释为什么JDBC没有为某些类型实现对象映射吗。例如,Postgres JDBC没有字节和短映射。我可以得到基本字节和短字符,但在对象格式中,我只能得到整数

这是源代码

字节和短对象类型有什么问题?如何使用TINYINT、SMALLINT等

实现getByte和getShort类似于

有什么问题?答案在 第187页

注意–JDBC1.0规范定义了 SMALLINT和TINYINT JDBC类型必须是整数。Java语言 在JDBC 1.0版本中未包含字节和短数据类型 规范最终确定。SMALLINT和TINYINT到的映射 保持整数以保持向后兼容性


与JDBC规范1.0的向后兼容性不允许在JDBC驱动程序中添加字节和短对象类型。只有一种解决方案:java拐杖

static public Integer getInteger(final ResultSet rs, final String columnName) throws SQLException {
    final int value = rs.getInt(columnName);
    return rs.wasNull() ? null : value;
}


真的很伤心。我们现在使用的是4.1规范,但仍然与1.0版保持向后兼容性。我不在乎兼容性。我已经厌倦了编写ResultSet包装器和sqlutil方法。如果你真的想要一个对象,你可以使用
getObject(idx,Integer.class)
。不需要自己做这件事。
static public Integer getInteger(final ResultSet rs, final String columnName) throws SQLException {
    final int value = rs.getInt(columnName);
    return rs.wasNull() ? null : value;
}
public <T> T getObjectValue(final ResultSet rs, final String columnName, final Class<T> clazz) throws SQLException {
    final T value = rs.getObject(columnName, clazz);
    return rs.wasNull() ? null : value;
}
public final class ResultSetWrapper {

    private final ResultSet rs;

    public ResultSetWrapper(final ResultSet rs) {
        this.rs = rs;
    }

    public ResultSet getResultSet() {
        return rs;
    }

    public Boolean getBoolean(String label) throws SQLException {
        // ...
    }

    public Byte getByte(String label) throws SQLException {
        // ...
    }

    public Byte getShort(String label) throws SQLException {
        // ...
    }

    // ...

}