Wenn wir also JDBI verwenden, um von der Datenbank abzufragen, wird es in einen Map<String, Object>
-Typ übernommen.
Ich möchte es als mein benutzerdefiniertes Objekt (Konstruktor) anstelle von Map<String, Object>
erhalten.
Stattdessen möchte ich Folgendes verwenden:
%Vor% Dabei ist customizedObject
class ein Objekt, das alle Spalteneigenschaften enthält.
Gibt es eine Möglichkeit, dies zu tun? Ich habe eine relative Dokumentation gefunden, aber ich kann die Implementierung nicht wirklich verstehen.
Siehe auch die vorherige Seite in der Dokumentation, die zeigt, wie Sie Ihre Handle
oder DBI
mit den Mappern verknüpfen können.
Im Wesentlichen benötigen Sie einen Mapper, um ResultSet
in das gewünschte Objekt und eine Schnittstelle für den Mapper zu konvertieren.
Nehmen wir ein minimales Beispiel an. Zuerst muss der Mapper bereitgestellt werden:
%Vor% Dann brauchen wir eine Schnittstelle, um zu definieren, welche Abfrage die Daten liefert, die an die Mapper-Klasse übergeben werden. Eine Ergebniszeile führt zu einem Aufruf von CustomizedObjectMapper.map(...)
:
Abschließend können die Objekte abgerufen werden: List<customizedObject> test = dbi.open(CustomizeObjectQuery.class).get()
.
Sie können die Komponenten auch individuell zusammenstellen und die Schnittstelle weglassen:
dbi.open().createQuery("Select uuid, other_colum from schema.relation").map(new EventMapper()).list()