Er zijn twee manieren om dynamisch te interageren met tabellen/kolommen (d.w.z. zonder de codegenerator te gebruiken) in jOOQ:
Gewone SQL gebruiken (org.jooq.SQL
)
Dat is wat je doet. U kunt de kolommen uiteraard direct in uw gewone SQL Field
kwalificeren referenties op twee manieren:
Door de "tmp"
. te herhalen tekenreeks in elk veld:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Door de "tmp"
. in te sluiten verwijzing in de gewone SQL-sjabloon:
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);
De gewone SQL-functionaliteit wordt hier in de handleiding beschreven
Gekwalificeerde referenties gebruiken (org.jooq.Name
)
Dat is waarschijnlijk wat je in plaats daarvan wilt doen. Je schrijft:
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);
De naamgevingsfunctionaliteit wordt hier beschreven in de handleiding .
De voordelen van deze aanpak zijn:
- Geen SQL-injectierisico
- Hoofdlettergevoeligheid is geregeld
- Tabeltoewijzing en andere AST-transformaties werken ook