Има два начина за динамично взаимодействие с таблици / колони (т.е. без използване на генератора на код) в jOOQ:
Използване на обикновен SQL (org.jooq.SQL
)
Това правиш. Очевидно можете да квалифицирате колоните директно във вашето обикновен SQL Field
препратки по два начина:
Чрез повторение на "tmp"
низ във всяко поле:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Чрез вграждане на "tmp"
справка в обикновения SQL шаблон:
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);
Обикновената SQL функционалност е документирана тук в ръководството
Използване на квалифицирани препратки (org.jooq.Name
)
Това вероятно искате да правите вместо това. Ще напишете:
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);
Функционалността за именуване е описана тук в ръководството .
Предимствата на този подход са:
- Без риск от SQL инжекция
- Главните и малки букви са погрижени
- Картографиране на таблици и други AST трансформации също ще работят