有没有办法动态查询数据库

Is there a way to dynamically query the database

我们想为房间数据库构建一个过滤器,其中过滤器选项由用户选择。

即 我们有一个带有字段(id、名称、日期、类型)的实体 用户可以按 and/or 之间的日期过滤列表 name contain text and/or type equals something

有没有办法在房间里做到这一点?

很抱歉,目前无法以您想要的方式实现。

我已经通过db.query(query, values)方法做到了。在运行时生成您的查询字符串(使用占位符 '?'),并传递一组运行时生成的值。请注意,这将 return 一个 Cursor,而不是您想要的特定对象的实例,因此您必须定义一个方法来将 Cursor 映射到 POJO。

我附上了一些链接到我的 Cursor2Pojo Mapper 和一个实现它的项目。请随意使用它,因为它应该以某种优雅的方式解决您的问题。它支持列表和单个实例 returns,尽管需要您向 class 添加更多注释(房间注释是 class 绑定的,因此您无法在运行时通过反射获取它们)

Cursor2Pojo custom lib

Project Implementation at line 66 - 72