Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Qualifizieren eines temporären Tabellenspaltennamens in jOOQ

Es gibt zwei Möglichkeiten, mit Tabellen / Spalten dynamisch (d. h. ohne Verwendung des Codegenerators) in jOOQ zu interagieren:

Mit einfachem SQL (org.jooq.SQL )

Das tust du. Sie können die Spalten natürlich direkt in Ihrem einfachen SQL-Field qualifizieren Verweise auf zwei Arten:

Durch Wiederholung des "tmp" Zeichenfolge in jedem Feld:

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

Durch Einbetten des "tmp" Verweis in der einfachen SQL-Vorlage:

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

Die einfache SQL-Funktionalität ist hier im Handbuch dokumentiert

Mit qualifizierten Referenzen (org.jooq.Name )

Das ist wahrscheinlich das, was Sie stattdessen tun möchten. Sie schreiben:

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

Die Benennungsfunktion wird hier im Handbuch beschrieben .

Die Vorteile dieses Ansatzes sind: