วันนี้เมื่อฉันดูซอร์สโค้ดของคนอื่นฉันได้ค้นพบสิ่งประดิษฐ์ฐานข้อมูลที่มีประโยชน์มากโดยบังเอิญ ให้ฉันแบ่งปันที่นี่
dbflow คืออะไร?
DBFLOW เป็นไลบรารีเครื่องมือสำหรับ Android SQLite ORM ที่ใช้การจัดการคำอธิบายประกอบ พูดง่ายๆคือมันเป็นไลบรารี Java ที่ทำงานในฐานข้อมูล SQLite
ORM (การทำแผนที่ความสัมพันธ์เชิงวัตถุ) แปลว่าการทำแผนที่ความสัมพันธ์เชิงวัตถุในภาษาจีนเป็นเทคโนโลยีในการแก้ปรากฏการณ์ที่ไม่ตรงกันระหว่างฐานข้อมูลเชิงวัตถุและเชิงสัมพันธ์ พูดง่ายๆคือ ORM ยังคงมีวัตถุในโปรแกรมโดยอัตโนมัติในฐานข้อมูลเชิงสัมพันธ์โดยใช้ข้อมูลเมตาที่อธิบายการแมประหว่างวัตถุและฐานข้อมูล
ทำไมต้องใช้ dbflow?
1. ความเร็ว
ขึ้นอยู่กับคำอธิบายประกอบการประมวลผล (โปรเซสเซอร์คำอธิบายประกอบ) การสร้างรหัสจะถูกสร้างขึ้นในเวลาคอมไพล์และประสิทธิภาพรันไทม์นั้นยอดเยี่ยม ผ่านวัตถุมัลติเพล็กซ์และกลไกการแคชจะได้รับประสบการณ์ความเร็วที่ดี
2. ความสามารถในการขยาย
แบบฟอร์มข้อมูลถูกแมปกับวัตถุข้อมูลและคลาสโมเดลได้รับการสืบทอดผ่านวัตถุ โดยทั่วไปแล้วมันก็เพียงพอที่จะสืบทอดคลาส Basemodel และเพิ่มคำอธิบายประกอบให้กับสมาชิกในชั้นเรียนเพื่อสร้างแบบฟอร์มที่ต้องการ
3. คำสั่งค้นหา
หากคุณใช้ไลบรารีอื่น ๆ เช่น Greendao คำสั่งแบบสอบถามใกล้เคียงกับคำสั่ง SQL มาก
4. ขึ้นอยู่กับ sqlite
ไม่มีข้อ จำกัด บนแพลตฟอร์มคุณสามารถใช้ dbflow ได้ทุกที่ที่มี SQLite
5. โอเพ่นซอร์ส
ซอร์สโค้ดเป็นสิ่งที่ดีและผู้ที่มีความสามารถสามารถตรวจสอบได้ https://github.com/raizlabs/dbflow
วิธีใช้ dbflow
กำหนดค่าสภาพแวดล้อม
ไม่ว่าคุณต้องการเรียนรู้อะไรสภาพแวดล้อมเป็นสิ่งสำคัญ ขั้นตอนแรกสำหรับห้องสมุดสามพรรคคือการนำเข้าไลบรารีคลาส
ก่อนอื่นเพิ่มที่อยู่ maven ใน build.gradle:
AllProjects {repositories {maven {url "https://jitpack.io"}}} ประการที่สองเพิ่มการพึ่งพาในโมดูลคลาสพื้นฐาน:
การคัดลอกรหัสมีดังนี้:
def dbflow_version = "4.2.4" การพึ่งพา {AnnotationProcessor "com.github.raizlabs.dbflow: dbflow-processor: $ {dbflow_version} "com.github.raizlabs.dbflow: dbflow-rx2: $ {dbflow_version}" คอมไพล์ "com.github.raizlabs.dbflow: dbflow-rx2: $ {dbflow_version}" คอมไพล์คอมไพล์ "com.github.raizlabs.dbflow: dbflow-sqlcipher: $ {dbflow_version}"}
หากคุณต้องการเพิ่มรหัส Kotlin ให้ตรวจสอบที่อยู่ซอร์สโค้ดด้านบนและดูคำแนะนำด้านล่าง
ใช้
เพิ่ม init ในแอปพลิเคชัน
flowmanager.*init*(นี่);
สร้างฐานข้อมูล
@database (name = dbflowData.*dbname*, version = dbflowData.*เวอร์ชัน*) คลาสสาธารณะ dbflowData {สตริงสุดท้ายคงที่สาธารณะ*dbname*= "dbflowData"; INT สุดท้ายคงที่สาธารณะ *= 1; -ใช้ฐานข้อมูลคำอธิบายประกอบชื่อฐานข้อมูลชื่อชื่อฐานข้อมูลชื่อ
สร้างแบบฟอร์ม
@Table (database = dbflowData.class) คลาสสาธารณะ dbflowmodel ขยาย basemodel {@primarykey (autoincrement = true) ID int สาธารณะ; @Column ชื่อสตริงสาธารณะ; สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; - ใช้คำอธิบายประกอบฐานข้อมูลฐานข้อมูลฐานข้อมูล Slave, แอตทริบิวต์แบบฟอร์มใช้คำอธิบายประกอบต่าง ๆ ปุ่มหลักคีย์หลักและคอลัมน์ Colum
หมายเหตุ: basemodel ที่เราสืบทอดมาที่นี่จัดทำโดย DBFlow และไม่สามารถสืบทอดได้ ความแตกต่างแตกต่างกันในแง่ของการเพิ่มการลบการดัดแปลงและการค้นหา
หลังจากการสร้างแล้วให้คลิก build-> make และรหัสที่จำเป็นจะถูกสร้างขึ้นภายใต้ ../build/generated/source/apt/debug
แทรก:
สร้างวัตถุแบบฟอร์มหลังจากกำหนดค่าให้เรียกใช้วิธีการบันทึกเพื่อแทรกการดำเนินการ
การคัดลอกรหัสมีดังนี้: dbflowmodel dbflowmodel = new dbflowmodel (); dbflowModel.name = ชื่อ; dbflowmodel.save ();
ลบ:
รหัสคล้ายกับคำสั่ง SQL เพื่อใช้งาน
sqlite.*ลบ*(). from (dbflowModel.class) .where (dbflowModel_Table.*id*.eq (id), dbflowModel_table.*ชื่อ*.eq (ชื่อ)) .Execute ();
คำถาม:
สิ่งนี้มีการดำเนินการค้นหาที่ซับซ้อนมากมาย หากคุณต้องการทราบข้อมูลเพิ่มเติมโปรดอ่านเอกสารอย่างเป็นทางการ
การคัดลอกรหัสมีดังนี้: รายการ <dbflowmodel> list = sqlite.*เลือก*(). จาก (dbflowmodel.class) .QueryList ();
ต่ออายุ:
พวกเขาทั้งหมดคล้ายกัน
sqlite.*อัปเดต*(dbflowmodel.class) .set (dbflowmodel_table.*ชื่อ*.eq ("pxxxx")) .where (dbflowmodel_table.*ชื่อ*.eq ("p0000")) .execute (); หมายเหตุ: หลังจากสร้างแบบฟอร์มใหม่คุณต้องอัพเกรดเวอร์ชันฐานข้อมูลมิฉะนั้นจะมีการรายงานข้อผิดพลาด
ที่นี่ฉันจะแนะนำการใช้ DBFLOW ขั้นพื้นฐานส่วนใหญ่สำหรับการแบ่งปันและบันทึกสิ่งที่มีประโยชน์บางอย่าง
ซอร์สโค้ด: https://github.com/xiaogoudandan/williamapp
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น