Unterstützt JDBI die Bindung von Aufzählungstypen über Anmerkungen?
Nehmen Sie beispielsweise ein DAO an, das eine Methode enthält:
%Vor% Und, foo
entspricht Foo.BAR
, könnte ich eine Abfrage erwarten:
Wenn ja, wird toString()
verwendet, um zu bestimmen, was substituiert ist?
Außerdem, erlaubt JDBI die Verwendung von @Bind
mit einem beliebigen Typ, der Object
erweitert? Und wieder, wenn ja, wird toString()
verwendet?
Nach dem Quellcode Enum.name()
wird verwendet, nicht toString()
Wenn ein Objekt gebunden ist, verwendet jdbi setObject(Object object)
des von Ihnen verwendeten jdbc-Treibers. Nach meiner Erfahrung mit PostgreSQL bindet es beispielsweise Map
s an hstore
und Arrays an postgreSQL array
s, weil dies der jdbc-Treiber von PostgreSQL tut.
Wenn Sie eine bestimmte Art von Objekten auf eine bestimmte Art behandeln wollen, können Sie ArgumentFactory
s implementieren (für die es keine Dokumentation gibt, sondern ein Beispiel hier in Stack Overflow ) oder BinderFactory (welches Ich habe gerade jetzt entdeckt.)
Um Ihre Frage "beliebige Typen" zu beantworten, können Sie eine BinderFactory
Dies ist besonders nützlich, wenn Sie komplexe Typen haben, die auf eine bestimmte Weise gespeichert werden sollen, z. Binärdaten oder Sammlungen, die in CSVs umgewandelt oder nur in separaten Zuordnungstabellen gespeichert werden sollen. Dann verwendest du deinen neuen Fancy Binder so:
%Vor% Sie können auch eine @BindBean
Annotation verwenden, die automatisch nach Feldern eines Objekts durch den Bind-Parameternamen sucht (z. B. kann sie einen Abfrage-Platzhalter ":userId"
der Methode getUserId()
zuordnen).
Tags und Links java mysql dropwizard jdbi