Ich versuche, eine einfache Möglichkeit zu finden, mit Stored Procedures/SQL umzugehen, die mehrere Ergebnismengen zurückgibt. Ich habe die SimpleJdbcOperations#queryForList()
Methode verwendet, aber dies wird nur das erste Ergebnis als List<Map<String, Object>>
zurückgeben. Ich muss in der Lage sein, mehrere Ergebnissätze zu erhalten, idealerweise als Collection
von List<Map<String, Object>>
oder etwas. Das Programm, das ich schreibe, ist eine Middleware-Komponente, daher weiß ich nicht, was das SQL sein wird oder die Form der Ergebnismenge.JdbcTemplate mehrere Ergebnissätze
Ich denke, ich muss die JdbcOperations
Klasse verwenden, die mir Zugang zu mehr Methoden gibt, einschließlich execute(CallableStatementCreator csc, CallableStatementCallback<T> action)
, aber jetzt bin ich fest.
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;
}
};
Ich bin nicht wirklich sicher, wie die Methode zu verwenden, obwohl, oder was mit den ResultSet
zu tun, um meinen generischen List<Map<String, Object>>
s zu erhalten.
A [ 'ResultSet'] (http://docs.oracle.com/javase/7/docs/api/java verwendet /sql/ResultSet.html) enthält Zeilen, wie Sie sie nach dem Ausführen von SQL direkt in einer Datenbank finden würden, es wird niemals eine 'List
Ich sollte in der Lage sein, das 'ResultSet' mit' hasNext() 'und' getObject() 'zu iterieren? –
Sie würden eine 'while' Schleife mit' next() 'verwenden und verschiedene Zeilenfelder mit den verschiedenen Gettern erhalten. –