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 इंजेक्शन जोखिम नहींए>
- केस-सेंसिटिविटी का ध्यान रखा जाता है
- टेबल मैपिंग और अन्य एएसटी रूपांतरण भी काम करेंगे