JdbcTemplate多个结果集

The*_*Cat 7 java jdbc spring-jdbc

我试图找到一种简单的方法来处理Stored Procedures/SQL返回多个结果集.我一直在使用该SimpleJdbcOperations#queryForList()方法,但这只会返回第一个结果集作为a 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;
        }
};
Run Code Online (Sandbox Code Playgroud)

我不确定如何使用该方法,或者如何处理ResultSet以获取我的通用List<Map<String, Object>>s.

The*_*Cat 3

我设法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;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

只是看看将 a 翻译ResultSetList<Map<String, Object>>