我正在尝试找到一种简单的方法来处理返回多个结果集的存储过程/SQL。我一直在使用 SimpleJdbcOperations#queryForList()
方法但是这只会返回第一个结果集作为 List<Map<String, Object>>
.我需要能够获得多个结果集,最好是 Collection
的 List<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/