Có hai cách để tương tác động với các bảng / cột (tức là không sử dụng trình tạo mã) trong jOOQ:
Sử dụng SQL thuần túy (org.jooq.SQL
)
Đó là những gì bạn đang làm. Rõ ràng là bạn có thể đủ điều kiện trực tiếp cho các cột trong Field
SQL thuần túy của mình tham chiếu theo hai cách:
Bằng cách lặp lại "tmp"
chuỗi trong mỗi trường:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Bằng cách nhúng "tmp"
tham chiếu trong mẫu SQL thuần túy:
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);
Chức năng SQL thuần túy được ghi lại ở đây trong sách hướng dẫn
Sử dụng các tham chiếu đủ điều kiện (org.jooq.Name
)
Đó có thể là những gì bạn muốn làm thay vào đó. Bạn sẽ viết:
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);
Chức năng đặt tên được mô tả ở đây trong sách hướng dẫn .
Ưu điểm của phương pháp này là:
- Không có nguy cơ chèn SQL
- Việc phân biệt chữ hoa chữ thường được quan tâm
- Ánh xạ bảng và các biến đổi AST khác cũng sẽ hoạt động