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

时间:2017-07-11 06:20:27

标签: android-room

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

即。 我们有一个带字段的实体(id,name,date,type) 用户可以按日期过滤列表和/或名称包含文本和/或类型等于某事

有没有办法在室内这样做?

1 个答案:

答案 0 :(得分:3)

我很遗憾地说,目前无法以您想要的方式实现这一目标。

我已设法使用db.query(query, values)方法完成此操作。在运行时生成查询字符串(使用占位符'?'),并传递运行时生成的值数组。请注意,这将返回Cursor,而不是您想要的特定对象的实例,因此您必须定义将Cursor映射到POJO的方法。

我已经附加了一些指向我的Cursor2Pojo Mapper和实现它的项目的链接。随意使用它,因为它应该以某种方式解决您的问题。它支持列表和单个实例返回,但是需要在类中添加更多注释(Room注释是类绑定的,因此您无法在运行时通过反射获取它们)

Cursor2Pojo custom lib

Project Implementation at line 66 - 72