有条件的WHERE in realm

时间:2016-06-01 15:28:28

标签: java android realm

我将我的应用从sqlite3移动到领域。

在我的旧代码中,查询是集体的,即代码检查一些设置并考虑构建正确的查询:

伪代码 - 之前是怎样的:

var str_where = "alala";
IF (SOMETHING) {
    str_where += "asdfasdfdasf";
}else{
    if (ANOTHERTHING)
        str_where += "trampampam";
    else
        str_where += "blablabla";
}

query+= "WHERE " + str_where

EXECUTE(query);

现在我没有任何查询字符串可以传递和执行。使用Realm我的查询如下:

伪代码 - 现在的样子:

IF (SOMETHING) {
    dbPhrases = realm.where(xPhrase.class)
    .contains("alala")
    .contains("asdfasdfdasf")
    .findAll();
}else{
    if (ANOTHERTHING)
         dbPhrases = realm.where(xPhrase.class)
        .contains("alala")
        .contains("trampampam")
        .findAll();
    else
        dbPhrases = realm.where(xPhrase.class)
        .contains("alala")
        .contains("blablabla")
        .findAll();
}

它看起来非常丑陋和混乱

那么有没有办法使用某个变量或者RealmQuery(我无法实现)来构建查询,然后在我做的时候最终执行它到现在为止?

1 个答案:

答案 0 :(得分:1)

尝试

RealmQuery<xPhrase> query = realm.where(xPhrase.class).contains("alala");
if (SOMETHING) {
    query.contains("asdfasdfdasf");
} else if (ANOTHERTHING) {
    query.contains("trampampam")
} else {
    query.contains("blablabla");
}
dpPhrases = query.findAll();