Ada dua cara untuk berinteraksi dengan tabel/kolom secara dinamis (yaitu tanpa menggunakan pembuat kode) di jOOQ:
Menggunakan SQL biasa (org.jooq.SQL
)
Itulah yang Anda lakukan. Anda jelas dapat memenuhi syarat kolom secara langsung di Field
SQL biasa Anda referensi dalam dua cara:
Dengan mengulangi "tmp"
string di setiap bidang:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Dengan menyematkan "tmp"
referensi dalam template SQL biasa:
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);
Fungsi SQL biasa didokumentasikan di sini dalam manual
Menggunakan referensi yang memenuhi syarat (org.jooq.Name
)
Itu mungkin yang ingin Anda lakukan sebagai gantinya. Anda akan menulis:
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);
Fungsi penamaan dijelaskan di sini dalam manual .
Keuntungan dari pendekatan ini adalah:
- Tidak ada risiko injeksi SQL
- Sensitivitas huruf besar-kecil diperhatikan
- Pemetaan tabel dan transformasi AST lainnya juga akan berfungsi