java - JdbcTemplate 多结果集

标签 java jdbc spring-jdbc

我正在尝试找到一种简单的方法来处理返回多个结果集的存储过程/SQL。我一直在使用 SimpleJdbcOperations#queryForList()方法但是这只会返回第一个结果集作为 List<Map<String, Object>> .我需要能够获得多个结果集,最好是 CollectionList<Map<String, Object>>或者其他的东西。我正在编写的程序是一个中间件组件,所以我不知道 SQL 是什么,也不知道结果集的形式。

我想我必须使用 JdbcOperations类让我可以访问更多方法,包括 execute(CallableStatementCreator csc, CallableStatementCallback<T> action)但现在我卡住了。

    CallableStatementCallback<T> callback = new CallableStatementCallback<T>() {
       @Override
       public T doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException
       {
           boolean results = cs.execute(request);
           while(results)
           {
               ResultSet result = cs.getResultSet();
               results = cs.getMoreResults();
           }
           return null;
        }
};

虽然我不太确定如何使用该方法,或者如何处理 ResultSet得到我的通用 List<Map<String, Object>>

最佳答案

我设法得到一个 Set<ResultSet>使用此代码,

private Set<ResultSet> executeProcedure(final String sql)
{
    return jdbc.execute(new CallableStatementCreator() {
        @Override
        public CallableStatement createCallableStatement(Connection con) throws SQLException
        {
            return con.prepareCall(sql);
        }
    }, new CallableStatementCallback<Set<ResultSet>>() {
        @Override
        public Set<ResultSet> doInCallableStatement(CallableStatement cs) throws SQLException
        {
            Set<ResultSet> results = new HashSet<>();

            boolean resultsAvailable = cs.execute();

            while (resultsAvailable)
            {
                results.add(cs.getResultSet());
                resultsAvailable = cs.getMoreResults();
            }
            return results;
        }
    });
}

只是想看看翻译 ResultSet进入List<Map<String, Object>> .

关于java - JdbcTemplate 多结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149672/

相关文章:

jdbc - CDH 4.1.1。 Hive JDBC连接

java - 独立 Spring 应用程序中遇到 BeanCreationException

java - 如何以自定义方式处理多行结果?

java - 如何使用 Java/Swing 旋转图像,然后将其原点设置为 0,0?

java mysql 外键约束

java - 是否可以对 XML jaxb 中的所有元素进行处理

java - 如何避免此 SQL 异常?

java - 使用 Spring JDBC 向外表插入数据

java - 如何使用二进制搜索找到将值插入有序数组的位置?

java - Java C/C++项目编译IDE