Esistono due modi per interagire con tabelle/colonne in modo dinamico (cioè senza utilizzare il generatore di codice) in jOOQ:
Utilizzo di un semplice SQL (org.jooq.SQL
)
Questo è quello che stai facendo. Ovviamente puoi qualificare le colonne direttamente nel tuo semplice Field
SQL riferimenti in due modi:
Ripetendo il "tmp"
stringa in ogni campo:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Incorporando il "tmp"
riferimento nel modello SQL semplice:
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);
La semplice funzionalità SQL è documentata qui nel manuale
Utilizzo di riferimenti qualificati (org.jooq.Name
)
Probabilmente è quello che vuoi fare invece. Scriverai:
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);
La funzionalità di denominazione è descritta qui nel manuale .
I vantaggi di questo approccio sono:
- Nessun rischio di SQL injection
- La distinzione tra maiuscole e minuscole è curata
- Mappatura delle tabelle e funzioneranno anche altre trasformazioni AST