Android Room数据库视图

时间:2018-11-29 11:46:04

标签: android database sqlite

在android文档代码中用于在会议室数据库中创建视图的

@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(
var id: Long,
var name: String?,
var departmentId: Long,
var departmentName: String?
)

但是我如何使用诸如user.id = userId的动态条件创建视图,其中userId = 1或2或某个整数

1 个答案:

答案 0 :(得分:0)

在创建数据库视图时,您可以在查询中包含Where子句,但这不是动态的。假设您要拥有一个仅返回分配给任何部门的活动用户的数据库视图,因此您可以拥有Where user.active = true或类似的东西。但这将在架构上进行设置,因此,每次查询该视图时,它只会返回活动用户。

将新用户添加到“用户”表时,视图将自动更新。

但是,在创建数据库视图时,不需要此Where子句。创建视图后,您可以将其用作普通表,因此可以使用DAO来仅查询具有所需ID的用户。

例如:

@Query("SELECT * FROM UserDetail WHERE id = :id")
fun search(id: Int): List<UserDetail>

因此,您的视图是一个连接用户和部门的“表”,然后您可以作为普通表进行查询并具有过滤器。

有帮助吗?