Jede Zeile in meinem DB wie dieseRowMapper Mit zurückzukehren Map <String, Map <String, List <Object> >>
School Class StudentID Name Age
123 8 811 John 10
123 8 812 Smith 11
123 8 821 John 12
123 8 822 Smith 13
123 9 911 John 14
123 9 912 Smith 15
456 8 811 John 10
456 8 812 Smith 11
Jetzt möchte sein wird ich die obigen Daten wie diese
zurückzukehrenMap<String,Map<String,List<Object>>>
ie. Map<School,Map<Class,List<StudentID>>>
Ich benutze Spring JdbcTemplate
mit einer RowMapper
aber alles was ich bekommen kann ist eine Liste aller Zeilen. Da ich meine Hauptkarte in meinem RowMapper nicht beibehalten kann (kann ich eine statische Karte in der RowMapper-Klasse haben ?? aber ich möchte nicht, dass es statisch ist, da dies ein Webservice ist und nachfolgende Aufrufe möglicherweise geschraubt werden.) Ich habe nur die Option, diese Zeilenliste zu bekommen und dann meine Logik zu haben, um die Sammlung zu erstellen, die ich möchte.
Ich habe über ResultSetExtractor
kennengelernt, aber ich konnte nicht finden, wie man das damit macht.
Bitte lassen Sie mich wissen, wenn es irgendeinen Weg gibt, den ich mit einem Zeilenmapper oder einer anderen Art erledigen kann. Oder mein einziger Weg, dies zu lösen, ist, dass ich die Liste wiederholen muss und bekomme, was ich will.
EDIT: Meine Abfrage ist eine Auswahlabfrage wie folgt aus:
SELECT * from TABLENAME
und es dauert eigentlich 40 Minuten die ResultSet von Java abzurufen.
Da der DB-Aufruf das Cache-Objekt füllen soll, was mit CRON alle 4 Stunden gemacht wird, ist es mir egal, die Zeitverzögerung von 40 Minuten seit den eigentlichen REST-Aufrufen bezieht sich auf das Cache-Objekt. Trotzdem möchte ich das so effizient wie möglich machen.
Bitte lassen Sie mich auch wissen, wenn es andere Möglichkeiten gibt, mit diesem Szenario umzugehen. Ein normaler jdbc-Aufruf für jeden REST-Aufruf ist teuer, da wir 100 Anfragen pro Sekunde erhalten.
Ich nehme an, Sie für jede Ihrer Einheiten eine 'DAO' Klasse haben? Warum lassen Sie nicht Ihre DAO die Transformation der "Liste" zur "Map" machen und sie an die Außenwelt zurückgeben? – CKing
Der jdbcTemplate-Aufruf befindet sich im DAO. Ich möchte wissen, ob dies mit RowMapper erledigt werden kann. – v1shnu
Also wollen Sie grundsätzlich die 'JdbcTemplate' die' Map' für Sie bilden, wenn Sie eine Abfrage damit ausführen? Ich glaube, jede Lösung, die du implementierst, würde schließlich nur eine 'Liste' in eine' Map' verwandeln, also warum nicht deine 'DAO' das machen lassen? – CKing