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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <!--?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
1 2 3 4 5 6 7 8 9 | 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 :
1 2 3 4 5 6 7 8 9 10 11 |
Lalu tambahkan model tersebut ke dalam file litepal.xml
1 |
Pada file class yang digunakan tambahkan :
1 | 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 :
1 2 3 4 5 | 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 :
1 2 3 | User userUpdate = DataSupport.find(User.class, 1); userUpdate.setEmail("achmad@email.com"); userUpdate.save(); |
atau menggunakan fungsi update() yang sudah tersedia dari DataSupport
1 2 3 | User userUpdate = new User(); userUpdate.setEmail("achmad@email.com"); userUpdate.update(id); |
Menghapus Data
Untuk menghapus menggunakan fungsi delete() dari DataSupport
1 | DataSupport.delete(User.class, id); |
atau jika menghapus banyak data, dengan menggunaka deleteAll()
Query Data
Untuk mendapatkan data sekaligus banyak dengan menggunakan findAll()
1 |
jika berdasarkan id tertentu
1 | User user = DataSupport.find(User.class, id); |
Multiple Database
Untuk membuat database lebih dari satu bisa menggunakan seperti :
1 2 3 4 | 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