sql >> Databasteknik >  >> RDS >> Mysql

Kvalificerar ett temporärt tabellkolumnnamn i jOOQ

Det finns två sätt att interagera med tabeller/kolumner dynamiskt (d.v.s. utan att använda kodgeneratorn) i jOOQ:

Använder vanlig SQL (org.jooq.SQL )

Det är vad du gör. Du kan självklart kvalificera kolumnerna direkt i ditt vanliga SQL Field referenser på två sätt:

Genom att upprepa "tmp" sträng i varje fält:

Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);

Genom att bädda in "tmp" referens i den vanliga SQL-mallen:

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

Den vanliga SQL-funktionaliteten finns dokumenterad här i manualen

Använda kvalificerade referenser (org.jooq.Name )

Det är förmodligen det du vill göra istället. Du kommer att skriva:

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

Namngivningsfunktionen beskrivs här i manualen .

Fördelarna med detta tillvägagångssätt är:




  1. Hur Pi() fungerar i PostgreSQL

  2. Oracle 12cR2 nu i Beta

  3. MySQL-syntax Fel rätt syntax att använda nära 'desc

  4. INSERT COMMAND ::FEL:kolumnvärdet finns inte