安卓Room数据库视图

12
在Android文档中创建Room数据库视图的代码是:

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

但是我该如何创建带有动态条件的视图,比如用户ID=userID,其中userID可以是1或2或其他整数?

1个回答

28

在创建数据库视图时,您可以在查询中使用Where子句,但这将不是动态的。假设您想要一个仅返回分配给任何部门的活跃用户的数据库视图,因此您可以使用Where user.active = true或类似内容。但这将设置在模式上,因此每次查询此视图时,它将仅返回活动用户。

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

但是,在创建数据库视图时,您不需要使用此Where子句。一旦视图创建完成,您可以像使用普通表一样使用它,因此您可以拥有一个DAO,仅查询具有所需id的用户。

例如:

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

所以你的观点是创建一个连接用户和部门的“表”,然后可以像普通表一样查询并过滤。

这对你有帮助吗?


这个解释很有道理。不确定为什么它没有任何投票。今晚回家后我会在我的项目上试一下。 - blueberry_chopsticks
1
这会有任何性能开销吗? - Sourav Kannantha B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接