XData บนระบบไดโนคิว

 







DiNOQ XData

เป็น ฟังก์ชันการเข้าถึงข้อมูลของแพลตฟอร์มไดโนคิว โดยจะทำงานร่วมกับ ดาตาโมเดล(Data Model) ที่ถูกสร้างจากเครื่องมือ ดาต้าสตูดิโอ(Data Studio) โดยผ่านทางการเขียนโค้ดภาษาควิก(Quick ซึ่งเป็นภาษา Script Language หลักที่ใช้พัฒนาบนแพลตฟอร์มไดโนคิว)

List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, true)
.with("telephone", query_telephone, true)
.execute();

จากรูปแบบด้านบนจะแยกเป็นส่วนๆ ดังนี้
1. กำหนดการใช้งาน ว่าจะใช้กับดาต้าโมเดลชื่อว่าอะไร -> scmain.model("DataModel").sys()
2. เลือกว่าจะใช้ฟิลด์ใหนในดาต้าโมเดลบ้าง -> .select("id")
3. กำหนดเงื่อนไขการดึงข้อมูล -> .with("name", "Saksit") คือ ดึงข้อมูลเมื่อ ฟิลด์ชื่อ name มีค่าเท่ากับ Saksit
4. สั่งทำงานด้วยคำสั่ง -> .execute() จะทำให้คืนค่าเป็น List ของ Object XData ซึ่งจะเขียนอยู่ในรูป List


เลือกใช้ทุกฟิลด์ในดาตาโมเดล

ดูภาพด้านล่าง

List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.with("name", query_name, true)
.with("telephone", query_telephone, true)
.execute();



กำหนดจำนวนข้อมูลที่ส่งกลับ

ดูภาพด้านล่าง

List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.max("200")
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, true)
.with("telephone", query_telephone, true)
.execute();



ส่งกลับแค่เรคคอร์ด(Record) บนสุดค่าเดียว

โดยค่าที่คืนมาจะเป็น XData Object

XData dataList = (XData)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, true)
.with("telephone", query_telephone, true)
.execute1();



กำหนดเงื่อนไข AND หรือ OR

ไม่ใส่อะไรแค่ with เฉยๆจะเป็น AND

List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, true)
.withOR("name", query_name, true)
.withAND("telephone", query_telephone, true)
.execute();



กำหนดเงื่อนไข การเปรียบเทียบเหมือนคำสั่ง Like

ไม่ว่าคำที่ค้นหาอยู่ตรงใหนของประโยคของข้อมูลที่อยู่ในฟิลด์ ก็ส่งค่าคืนกลับมา
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, true)
.with("telephone", query_telephone, true)
.execute();


กำหนดเงื่อนไข การเปรียบเทียบต้องเหมือนกันทั้งหมด

จะส่งค่าคืนก็ต่อเมื่อคำที่ค้นหา เหมือนข้อมูลที่อยู่ในฟิลด์ทั้ง 100%
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, false)
.with("telephone", query_telephone, false)
.execute();


กำหนดเงื่อนไข การเปรียบเทียบต้องเหมือนเหมือนกับค่าใดค่าหนึ่งใน 4 ค่านี้ (With In)

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, false)
.with("status", "Active", "Receive", "Cancel", "Done")
.execute();


กำหนดเงื่อนไข การเปรียบเทียบให้อยู่ระหว่างต่า 2 ค่า

การทำงานที่ทำได้คือ bt=between
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, false)
.with("date", "11222112333", "2221133331", "bt")
.execute();


กำหนดเงื่อนไข ต้องเป็นฟิลด์ที่มีข้อมูล

การตั้งค่าคือ ex=Exist
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", "", "ex")
.execute();


กำหนดเงื่อนไข ต้องเป็นฟิลด์ที่ไม่มีข้อมูล

การตั้งค่าคือ ne=Not Exist
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", "", "ne")
.execute();


กำหนดเงื่อนไข การเปรียบเทียบโดยกำหนด Operation การทำงาน

การทำงานที่ทำได้คือ eq=Equal, ng=NotEqual, gt=GreaterThan, gte=GreaterThanOrEqual, lt=LessThan, lte=LessThanOrEqual
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.select("telephone")
.select("email")
.select("website")
.with("name", query_name, false)
.with("date", "11222112333", "eq")
.execute();


โหลดข้อมูล

ปกติคำสั่ง ค้นหาหากมีค่าส่งกลับมากกว่า 3 เรคคอร์ด ข้อมูลในฟิลด์ที่เป็นลักษณะข้อมูลแบบไบนารี จะไม่ถูกส่งกลับ จำเป็นต้องใช้คำสั่งโหลดเพื่อดึงข้อมูลเหล่านั้น
XData dataList =
scmain.model("DataModel").sys().id("id").load();


บันทึกข้อมูล

ทำการบันทึกข้อมูลด้วย XData Object
XData dataList =
scmain.model("DataModel").sys().save(XDataEntity);


สร้าง และใส่ค่า XData Object

...
XData data = new XData();
data.set("name", "Saksit");
data.set("lastname", "Likhitmethakul");
data.set("nickname", "Nueng");
data.set("province", "Korat");
data.set("country", "Thailand");
data.set("Age", "44");
data.set("Occupation", "Developer");


เรียกใช้ค่าจาก XData Object

...
XData dataList =
scmain.model("DataModel").sys().id("id").load();
data.get("name"); //Return Object
data.getS("lastname"); //Return String
data.getI("Age"); //Return Integer


วนลูปดึงค่าจาก List ของ XData

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
for(XData data : dataList){
scout.print(data.getS("name"));
}


วนลูปดึงค่าจาก List ของ XData พร้อมกับเรียงข้อมูลจาก List Object

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
for(XData data : x.Utils.sort(dataList, "name")){
scout.print(data.getS("name"));
}

เรียงข้อมูลจาก List Object โดยกำหนดจำนวน

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
for(XData data : x.Utils.sort(dataList, "name", 200)){
scout.print(data.getS("name"));
}

เรียงข้อมูลจาก List Object จากมากไปน้อย

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
for(XData data : x.Utils.sort(dataList, "name", false)){
scout.print(data.getS("name"));
}

เรียงข้อมูลจาก List Object โดยค่าที่ใช้เรียงเป็นตัวเลข

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
for(XData data : x.Utils.sortI(dataList, "datetime")){
scout.print(data.getS("name"));
}


ทำการแปลง XData Object ให้เป็น XML หรือ JSON

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
for(XData data : dataList){
scout.print(x.IO.object2Xml(data);
scout.print(x.IO.object2Json(data);
}


ทำการแปลง List ของ XData Object ให้เป็น XML หรือ JSON

...
List<*XData*> dataList = (List<*XData*>)
scmain.model("DataModel").sys()
.select("id")
.select("name")
.with("name", query_name, true)
.execute();
scout.print(x.IO.object2Xml(dataList);
scout.print(x.IO.object2Json(dataList);


ทำการแปลง XML หรือ JSON ให้เป็น XData Object

...
scout.print(x.IO.xml2Object(xmldata);
scout.print(x.IO.json2Object(jsondata);


ทำการแปลง XML หรือ JSON ให้เป็น List ของ XData Object

...
scout.print(x.IO.xml2Object(xmldatalist);
scout.print(x.IO.json2Object(jsondatalist);