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

Thư viện lưu trữ dữ liệu Room hỗ trợ khung hiển thị cơ sở dữ liệu SQLite, cho phép bạn đóng gói một truy vấn trong 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) và bạn có thể dùng chúng làm đối tượng dữ liệu trong đối tượng truy cập dữ liệu (DAO).

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

Để tạo một khung hiển thị, hãy thêm chú thích @DatabaseView vào một lớp. Đặt giá trị 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ị:

@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?
)

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, hãy thêm thuộc tính views vào chú thích @Database của ứng dụng:

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