Litepal : Implementasi SQLite CRUD di Android Mudah dan Cepat

Setelah sebelumnya saya sudah membahas library sqlite room. Kali ini adalah library sqlite lain yang memudahkan untuk implementasi sqlite di android. Litepal merupakan library android open source yang memudahkan penggunaan SQLite. Pada litepal ini tidak menggunakan perintah sql sama sekali. Operasi SQLite yang bisa dilakukan seperti membuat table, upgrade table, crud, fungsi aggregate, dan lain sebagainya.

Fitur yang tersedia di litepal

  • Menggunakan ORM (object relational mapping).
  • Konfigurasi yang mudah
  • Mendukung multi-databaseMulti databases supported.

Untuk setup/instalasi litepal juga cukup mudah. Berikut caranya :

Setup

Menambahkan Library

Di android studio, pada file build.gradle, tambahkan :

dependencies {
    compile 'org.litepal.android:core:1.6.1'
}

File konfigurasi litepal.xml

Litepal membutuhkan file konfigurasi yang mendefinisikan database, versi dan table yang digunakan. Buat file litepal.xml ini didalam folder assets. Dengan isi xml seperti ini :

<!--?xml version="1.0" encoding="utf-8"?-->
<!--
Define the database name of your application.
By default each database name should be end with .db.
If you didn't name your database end with .db,
LitePal would plus the suffix automatically for you.
For example:
<dbname value="demo" />
-->

<!--
Define the version of your database. Each time you want
to upgrade your database, the version tag would helps.
Modify the models you defined in the mapping tag, and just
make the version value plus one, the upgrade of database
will be processed automatically without concern.
For example:
<version value="1" />
-->

<!--
Define your models in the list with mapping tag, LitePal will
create tables for each mapping class. The supported fields
defined in models will be mapped into columns.
For example:
    <list>
            <mapping class="com.test.model.Reader" />
            <mapping class="com.test.model.Magazine" />
        </list>
   -->

<!--
Define where the .db file should be. "internal" means the .db file
will be stored in the database folder of internal storage which no
one can access. "external" means the .db file will be stored in the
path to the directory on the primary external storage device where
the application can place persistent files it owns which everyone
can access. "internal" will act as default.
For example:
<storage value="external" />
-->

beberapa penjelasan :

  • dbname nama database
  • version versi dari database. Setiap melakukan perubahan database,maka tambahkan nilai versi yang digunakan.
  • list class/model/table yang digunakan.
  • storage menentukan file database yang dihasil disimpan di internal atau eksternal.

Konfigurasi LitepalApplication

Selanjutnya tambahkan pada class application yang digunakan

public class MyOwnApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}

setup sudah berhasil dilakukan.

Implementasi SQLite

Membuat Table

Misal kita akan membuat table user, maka kita perlu membuat model table tersebut dengan meng-extend DataSupport milik litepal, seperti :

public class User extends DataSupport {

private String name;

private String email;

private String phone;

// generated getters and setters.
...
}

Lalu tambahkan model tersebut ke dalam file litepal.xml

 

Pada file class yang digunakan tambahkan :

SQLiteDatabase db = LitePal.getDatabase();

maka otomatis model/tabel yang sudah didefinisikan akan terbuat otomatis dengan struktur yang sama dengan yang di model.

Menyimpan Data

Untuk menyimpan data juga cukup mudah, dengan meng-inherit dari model DataSupport yang digunakan :

User user = new User();
user.setName("fachrie");
user.setEmail("fachrie@email.com");
user.setPhone("00011100");
user.save();

Mengupdate Data

Untuk mengupdate data bisa dilakukan beberapa cara, dengan menggunakan fitur save() berdasarkan object yang sudah dibuat seperti :

User userUpdate = DataSupport.find(User.class, 1);
userUpdate.setEmail("achmad@email.com");
userUpdate.save();

atau menggunakan fungsi update() yang sudah tersedia dari DataSupport

User userUpdate = new User();
userUpdate.setEmail("achmad@email.com");
userUpdate.update(id);

Menghapus Data

Untuk menghapus menggunakan fungsi delete() dari DataSupport

DataSupport.delete(User.class, id);

atau jika menghapus banyak data, dengan menggunaka deleteAll()

Query Data

Untuk mendapatkan data sekaligus banyak dengan menggunakan findAll()

List allUsers = DataSupport.findAll(User.class);

jika berdasarkan id tertentu

User user = DataSupport.find(User.class, id);

Multiple Database

Untuk membuat database lebih dari satu bisa menggunakan seperti :

LitePalDB litePalDB = new LitePalDB("demo2", 1);
litePalDB.addClassName(User.class.getName());
litePalDB.addClassName(Account.class.getName());
LitePal.use(litePalDB);

salah satu perbedaan dibanding dengan room, untuk implementasi query yang kompleks, seperti join dan kondisi-kondisi tertentu, maka di litepal mungkin akan sulit. Tapi jika penggunaan hanya CRUD yang sederhana, maka penggunaan litepal sangat mudah dan cepat

untuk tahu lebih banyak bisa lanjut ke https://github.com/LitePalFramework/LitePal

Mungkin Anda juga menyukai

Tinggalkan Balasan

Alamat surel Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *