我应该如何使用Ebean的finder
创建带有可选列的查询来过滤某些数据?
我希望得到一个List<User>
。想象一下,我有3列要过滤:按名称,按流派等等。如果我选择类型,查询应列出所选类型的所有记录,之后,如果我选择名称约翰和流派男性,查询应列出所有&#34;约翰&#34;谁是男性&#34;它就是这样。
我知道要创建简单的查询来查找列:
find.where().eq("ex1",var1).eq("ex2", var2).findList();
有什么建议吗?
答案 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();
}