Tạo thành phần hiển thị trong cơ sở dữ liệu

Từ phiên bản 2.1.0 trở lên, Thư viện khả năng lưu trữ Room hỗ trợ khung hiển thị cơ sở dữ liệu SQLite, cho phép bạn đóng gói truy vấn vào một lớp. Room gọi các lớp được truy vấn này là thành phần hiển thị (view). Thành phần hiển thị hoạt động giống như các đối tượng dữ liệu đơn giản khi dùng trong DAO.

Tạo thành phần hiển thị

Để tạo thành phần hiển thị, hãy thêm chú thích @DatabaseView vào một lớp. Đặt giá trị của chú thích thành truy vấn mà lớp đại diện.

Đoạn mã sau đây cho thấy ví dụ về thành phần hiển thị:

Kotlin

@DatabaseView("SELECT user.id, user.name, user.departmentId," +
        "department.name AS departmentName FROM user " +
        "INNER JOIN department ON user.departmentId = department.id")
data class UserDetail(
    val id: Long,
    val name: String?,
    val departmentId: Long,
    val departmentName: String?
)

Java

@DatabaseView("SELECT user.id, user.name, user.departmentId," +
              "department.name AS departmentName FROM user " +
              "INNER JOIN department ON user.departmentId = department.id")
public class UserDetail {
    public long id;
    public String name;
    public long departmentId;
    public String departmentName;
}

Liên kết thành phần hiển thị với cơ sở dữ liệu

Để đưa thành phần hiển thị này vào cơ sở dữ liệu của ứng dụng, hãy đưa thuộc tính views vào chú thích @Database của ứng dụng:

Kotlin

@Database(entities = [User::class],
          views =[UserDetail::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Java

@Database(entities = {User.class}, views = {UserDetail.class},
          version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}