สร้างมุมมองในฐานข้อมูล

ไลบรารีการคงอยู่ของ Room รองรับ มุมมองฐานข้อมูล SQLite ซึ่งช่วยให้คุณห่อหุ้มการค้นหา ไว้ในคลาสได้ Room เรียกคลาสที่รองรับการค้นหาเหล่านี้ว่า มุมมอง และคุณสามารถ ใช้คลาสเหล่านี้เป็นออบเจ็กต์ข้อมูลใน ออบเจ็กต์การเข้าถึงข้อมูล (DAO)

สร้างมุมมอง

หากต้องการสร้างมุมมอง ให้เพิ่มคำอธิบายประกอบ @DatabaseView ลงในคลาส และตั้งค่าคำอธิบายประกอบเป็นการค้นหาที่คลาสแสดง

ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างมุมมอง

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

เชื่อมโยงมุมมองกับฐานข้อมูล

หากต้องการรวมมุมมองนี้ไว้ในฐานข้อมูล ให้เพิ่มพร็อพเพอร์ตี้ views ลงใน คำอธิบายประกอบ @Database ของแอป

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