Spring JdbcTemplate:PreparedStatement的ResultSet中的count(*)返回值类型

时间:2018-08-28 08:51:04

标签: spring postgresql db2 jdbctemplate

使用Spring JdbcTemplate编写的语句的结果集中的count(*)返回值类型是什么?

        String query = "select count(*) as ROW_COUNT from table1";

        List<Map<String, Object>> list = executePreparedStatement(query);

        Iterator<Map<String, Object>> iter = list.iterator();
        if (iter.hasNext()) {
            Map<String, Object> lom = iter.next();
            return (((Long) lom.get("ROW_COUNT"))).intValue();
        }

这取决于JDBC驱动程序/和/或数据库吗?

例如,在DB2中,返回值类型为Integer,而在PostgreSQL中则为Long。

这为什么不同?

1 个答案:

答案 0 :(得分:1)

不同的供应商有不同的实现方式。

有时甚至一个供应商也可以有不同的实现方式。

您需要相应地编码。

用于Linux / Unix / Windows的Db2,用于i系列的Db2,用于Z / OS的Db2,都从COUNT函数返回一个大整数。

另外,如果表是分布式的,我的Db2可以从count函数返回DECIMAL(15,0)。

Db2中还有一个COUNT_BIG函数,该函数返回DECIMAL(31,0)。