Mysql
 sql >> Database >  >> RDS >> Mysql

Qualificazione di un nome di colonna di tabella temporanea in jOOQ

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: