JdbcTemplate plusieurs jeux de résultats
J'essaie de trouver un moyen facile de traiter avec des Procédures Stockées /SQL renvoyant plusieurs ensembles de données. J'ai été en utilisant le SimpleJdbcOperations#queryForList()
cependant, cette méthode ne retourne que le premier résultat comme un List<Map<String, Object>>
. J'ai besoin d'être en mesure d'obtenir plusieurs jeux de résultats, de préférence en Collection
de List<Map<String, Object>>
ou quelque chose. Le programme que je suis en train d'écrire est un composant logiciel intermédiaire donc je ne sais pas ce que le SQL, ou la forme de l'ensemble de résultats.
Je pense que je dois utiliser le JdbcOperations
classe qui me donne accès à plus de méthodes, y compris execute(CallableStatementCreator csc, CallableStatementCallback<T> action)
mais maintenant je suis coincé.
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;
}
};
Je ne suis pas vraiment sûr de savoir comment utiliser la méthode bien que, ou que faire avec de la ResultSet
pour obtenir mon générique List<Map<String, Object>>
s.
ResultSet
contient des lignes que vous trouverez après l'exécution de SQL directement sur une base de données, il ne sera jamais de retour d'un List<Map<X,Y>>
. Vous devez générer vous-même avec les champs de la ResultSet
, auquel vous pouvez accéder avec des getters.Je devrais être capable de réitérer la
ResultSet
à l'aide de hasNext()
et getObject()
?Vous pouvez utiliser un
while
boucle avec next()
et obtenir différents champs de ligne avec les différentes méthodes.Pense que je ne peux utiliser
getObject
car je ne sais pas ce que le ResultSet
sera.N'êtes-vous pas celui de l'écriture SQL? Je pense que vous allez avoir à le jeter comme un point.
OriginalL'auteur The Cat | 2013-04-22
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à obtenir un
Set<ResultSet>
l'aide de ce code,Juste d'aller le chercher à la traduction d'un
ResultSet
enList<Map<String, Object>>
.OriginalL'auteur The Cat
Vous pouvez utiliser le jeu de résultats.getMetaData() la méthode de travail ce sont les colonnes dans les données:
Vous pouvez ensuite faire comme les autres intervenants ont mentionné faire une boucle à travers le jeu de résultats à sortir les données dont vous avez besoin:
OriginalL'auteur dannrob
J'ai utilisé la méthode ci-dessous pour obtenir la Liste des ResultSet en forme de
List<Map<String, Object>>
OriginalL'auteur TaherT