Sử dụng LitePal để thao tác với SQLite trên Android

LitePal là một thư viện ORM (Object-Relational Mapping) nhẹ, giúp lập trình viên Android thao tác với cơ sở dữ liệu SQLite mà không cần viết câu lệnh SQL. Thay vào đó, các thao tác như chèn, truy vấn, cập nhật hay xóa dữ liệu có thể được thực hiện thông qua việc làm việc với các đối tượng Java. Điều này giúp tăng tốc độ phát triển và giảm thiểu lỗi cú pháp khi xử lý cơ sở dữ liệu.

Cấu hình ban đầu

Để bắt đầu sử dụng LitePal, trước tiên cần thêm thư viện vào dự án. Bạn có thể download file JAR hoặc sử dụng Gradle (nếu hỗ trợ). Sau đó, tạo file litepal.xml trong thư mục assets:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="app_database" />
    <version value="1" />
    <list>
        <mapping class="com.example.app.CourseItem" />
    </list>
</litepal>

Trong cấu hình trên:

  • dbname: Tên của cơ sở dữ liệu.
  • version: Phiên bản cơ sở dữ liệu. Khi thay đổi cấu trúc bảng, cần tăng giá trị này.
  • mapping class: Chỉ định lớp thực thể sẽ được ánh xạ thành bảng trong cơ sở dữ liệu.

Đồng thời, cập nhật thuộc tính android:name trong thẻ <application> của file AndroidManifest.xml:

<application
    android:name="org.litepal.LitePalApplication"
    ... >
</application>

Tạo lớp thực thể

Lớp mô hình cần kế thừa từ DataSupport để sử dụng các phương thức ORM. Ví dụ về lớp CourseItem:

package com.example.app;

import org.litepal.crud.DataSupport;

public class CourseItem extends DataSupport {

    private int id;
    private String courseName;
    private String instructor;
    private int durationInMinutes;
    private String imageUrl;

    public CourseItem() {}

    // Getters và Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getInstructor() {
        return instructor;
    }

    public void setInstructor(String instructor) {
        this.instructor = instructor;
    }

    public int getDurationInMinutes() {
        return durationInMinutes;
    }

    public void setDurationInMinutes(int durationInMinutes) {
        this.durationInMinutes = durationInMinutes;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
}

Khi ứng dụng khởi động, nếu bảng CourseItem chưa tồn tại, LitePal sẽ tự động tạo bảng với các cột tương ứng tên thuộc tính.

Chèn dữ liệu vào cơ sở dữ liệu

Việc lưu một đối tượng mới rất đơn giản bằng cách gọi phương thức save():

CourseItem item = new CourseItem();
item.setCourseName("Lập trình Android");
item.setInstructor("Nguyễn Văn A");
item.setDurationInMinutes(90);
item.setImageUrl("https://example.com/android.jpg");
item.save();

Phương thức save() sẽ thực hiện lệnh INSERT dưới nền mà không cần bạn viết bất kỳ câu SQL nào.

Truy vấn dữ liệu

LitePal cung cấp nhiều phương thức linh hoạt để lấy dữ liệu:

  • Lấy tất cả bản ghi:
    List<CourseItem> courses = DataSupport.findAll(CourseItem.class);
  • Lấy theo danh sách ID:
    List<CourseItem> courses = DataSupport.findAll(CourseItem.class, 1, 3, 5);
  • Lấy bản ghi đầu tiên:
    CourseItem first = DataSupport.findFirst(CourseItem.class);
  • Lấy bản ghi cuối cùng:
    CourseItem last = DataSupport.findLast(CourseItem.class);
  • Truy vấn có điều kiện nâng cao:
    List<CourseItem> result = DataSupport.where("durationInMinutes > ?", "60").find(CourseItem.class);
  • Sử dụng truy vấn SQL thuần:
    Cursor cursor = DataSupport.findBySQL("SELECT * FROM courseitem WHERE instructor = ?", "Nguyễn Văn A");

Các phương thức truy vấn cho phép lọc, sắp xếp và chọn trường một cách dễ dàng, giúp tích hợp dữ liệu vào giao diện người dùng một cách hiệu quả.

Thẻ: LitePal SQLite Android orm DataSupport

Đăng vào ngày 4 tháng 7 lúc 16:28