Istnieją dwa sposoby na dynamiczną interakcję z tabelami/kolumnami (tj. bez użycia generatora kodu) w jOOQ:
Korzystanie ze zwykłego SQL (org.jooq.SQL
)
To właśnie robisz. Oczywiście możesz zakwalifikować kolumny bezpośrednio w swoim zwykłym Field
SQL referencje na dwa sposoby:
Powtarzając "tmp"
ciąg w każdym polu:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Osadzając "tmp"
odniesienie w zwykłym szablonie SQL:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("{0}.type", String.class, TMP);
Field<String> TOKEN = DSL.field("{0}.token", String.class, TMP);
Funkcja zwykłego SQL jest udokumentowana tutaj w podręczniku
Korzystanie z kwalifikowanych referencji (org.jooq.Name
)
To jest prawdopodobnie to, co chcesz robić zamiast tego. Napiszesz:
Table<Record> TMP = DSL.table(DSL.name("tmp"));
Field<String> TYPE = DSL.field(DSL.name("tmp", "type"), String.class);
Field<String> TOKEN = DSL.field(DSL.name("tmp", "token"), String.class);
Funkcja nazewnictwa jest opisana w tym podręczniku .
Zaletami tego podejścia są:
- Brak ryzyka wstrzyknięcia SQL
- Zadbano o rozróżnianie wielkości liter
- Mapowanie tabel i inne przekształcenia AST też będą działać