Java – jdbctemplate multiple result sets
I tried to find a simple way to handle stored procedures / SQL returning multiple result sets I have been using the simplejdbcioperations#queryforlist() method, but this will only return the first result set as list < map < string, Object > > I need to be able to get multiple result sets, ideally a list set < map < string, Object > > or something else The program I wrote is a middleware component, so I don't know what SQL will be or the form of result set
I think I have to use the jdbcoperations class, which allows me to access more methods, including execution (callablestatementcreator CSC, callablestatementcallback < T > action), but now I'm stuck
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;
}
};
I'm not sure how to use this method, or how to handle the resultset to get my general list < map < string, Object > > s
Solution
I managed to get a set < resultset > using this code,
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;
}
});
}
Just look at converting the resultset to list < map < string, Object > >
