问题描述
我想查询一个表,但是如果它等于某个值,我想忽略WHERE子句:这是我的代码:
@Query("SELECT * FROM content WHERE seen :seen")
public abstract List<content> getContent(String seen);
如果它等于“ False”,我想忽略where子句“ seen”。
我尝试过使用seen = "seen"
,与column = column
类似,但是没有用,但是在sqlite数据库浏览器中也可以使用。
请帮助
解决方法
尝试以下方法之一(您的问题可能会以不同的方式解释):
选项1 。如果方法的参数seen
为'False',则忽略“ WHERE”子句
@Query("SELECT * FROM content WHERE seen =:seen OR :seen = 'False'")
public abstract List<content> getContent(String seen);
选项2 。对于字段seen
为“ False”的表行,忽略“ WHERE”子句
@Query("SELECT * FROM content WHERE seen =:seen OR seen = 'False'")
public abstract List<content> getContent(String seen);
,
如果我能很好地理解您,那么您需要获取除等于False
以外的所有列表,然后可以使用!=
运算符
@Query("SELECT * FROM content WHERE seen :seen AND seen != 'False'")
public abstract List<content> getContent(String seen);
或者您可以将False
作为方法参数传递
@Query("SELECT * FROM content WHERE seen :seen AND seen != :exclude")
public abstract List<content> getContent(String seen,String exclude);
但是我怀疑您的意思是如果要传入的String等于WHERE
,则要排除整个False
子句,可以像下面这样以编程方式完成
在存储库中:
public void getContent(String seen) {
if (seen.equals("False"))
mDao.getContent();
else
mDao.getContent(seen);
}
在没有参数的Dao中实现getContent()
。
@Query("SELECT * FROM content")
public abstract List<content> getContent();
注意:您必须处理存储库中的列表侦听器