用于过滤dataBase记录的可选列

时间:2015-07-21 08:45:17

标签: mysql playframework ebean

我应该如何使用Ebean的finder创建带有可选列的查询来过滤某些数据?

我希望得到一个List<User>。想象一下,我有3列要过滤:按名称,按流派等等。如果我选择类型,查询应列出所选类型的所有记录,之后,如果我选择名称约翰和流派男性,查询应列出所有&#34;约翰&#34;谁是男性&#34;它就是这样。

我知道要创建简单的查询来查找列:

find.where().eq("ex1",var1).eq("ex2", var2).findList();

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

尝试使用ExpressionList。以下是示例,如果满足if statement中的条件,则表达式将包含在where子句中。

public static List<User> filterUsers(int user_no, String genre, String name){

    com.avaje.ebean.ExpressionList expressionList = find.where().eq("user_no", user_no);

    if(condition1)
        expressionList.eq("genre", genre);

    if(condition2)
        expressionList.eq("name", name);

    return expressionList.findList();

}