创建视图并将其关联到数据库

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
}