JDBI, Daten mit SQL-Abfrage in benutzerdefiniertes Objekt (Konstruktor) anstelle von Map abrufen

8

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.

%Vor%

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.

Ссылка

    
ringord 14.04.2014, 17:30
quelle

1 Antwort

11

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(...) :

%Vor%

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()

    
Augustus Kling 14.04.2014, 20:01
quelle

Tags und Links