Ansichten in einer Datenbank erstellen

Die Room-Persistenzbibliothek unterstützt SQLite-Datenbankansichten, mit denen Sie eine Abfrage in einer Klasse kapseln können. In Room werden diese klassenbasierten Abfragen als Ansichten bezeichnet. Sie können sie als Datenobjekte in einem Datenzugriffsobjekt (Data Access Object, DAO) verwenden.

Ansicht erstellen

Fügen Sie der Klasse die @DatabaseView Annotation hinzu, um eine Ansicht zu erstellen. Legen Sie den Wert der Annotation auf die Abfrage fest, die die Klasse darstellt.

Das folgende Code-Snippet enthält ein Beispiel für eine Ansicht:

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

Ansicht mit Ihrer Datenbank verknüpfen

Wenn Sie diese Ansicht in Ihre Datenbank einbeziehen möchten, fügen Sie der Annotation @Database Ihrer App die views Eigenschaft hinzu:

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