Room官方文档(翻译)3.在数据库中创建视图

1,161 阅读1分钟

Room 2.1.0及更高版本提供了数据库视图的支持,允许将查询封装到某个类中。Room 将这些支持查询的类称之为视图,并且在 DAO 中使用时跟普通数据对象一样。

Note:就像其他实体一样,可以对视图运行 SELECT 语句。但是,不能对视图运行 INSERT,UPDATE 以及 DELETE 语句

创建视图

要创建一个视图,在类上添加@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?
)

将视图与数据库关联

为了将视图作为你 app 数据库的一部分,需要设置@Database注解的 views 属性

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

Room官方文档(翻译)0.概览

Room官方文档(翻译)1.使用Room实体定义数据

Room官方文档(翻译)2.定义对象间的关系

Room官方文档(翻译)3.在数据库中创建视图

Room官方文档(翻译)4.使用Room DAOs访问数据

Room官方文档(翻译)5.迁移数据库

Room官方文档(翻译)6.测试数据库

Room官方文档(翻译)7.使用Room引用复杂数据