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

Kvalificering af et midlertidigt tabelkolonnenavn i jOOQ

Der er to måder at interagere med tabeller/kolonner dynamisk (dvs. uden at bruge kodegeneratoren) i jOOQ:

Ved brug af almindelig SQL (org.jooq.SQL )

Det er det, du laver. Du kan naturligvis kvalificere kolonnerne direkte i dit almindelige SQL Field referencer på to måder:

Ved at gentage "tmp" streng i hvert felt:

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

Ved at indlejre "tmp" reference i den almindelige SQL-skabelon:

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 almindelige SQL-funktionalitet er dokumenteret her i manualen

Brug af kvalificerede referencer (org.jooq.Name )

Det er nok det, du vil gøre i stedet for. Du skriver:

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

Navnefunktionaliteten er beskrevet her i manualen .

Fordelene ved denne tilgang er:




  1. Standard sorteringsrækkefølge i MySQL (ÆNDRINGSTABEL ... BESTIL EFTER ...;)

  2. Accelereret databasegendannelse i SQL Server 2019

  3. Vælg kolonner med bestemte kolonnenavne i PostgreSQL

  4. OracleException (0x80004005) Når du opretter forbindelse til Oracle-databasen