我应该如何使用Ebean的finder
创建一个带有可选列的查询来过滤一些数据?
例如,我想得到一个List<User>
。假设我有3个列要筛选:按名称、按类型和其他内容。如果我选择了类型,则查询应列出所选类型的所有记录,之后,如果我选择了名称John和类型male,则查询应列出所有“John”为“male”的人,依此类推。
我知道要为列创建简单的查询:
find.where().eq("ex1",var1).eq("ex2", var2).findList();
有什么建议吗?
最佳答案
尝试使用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();
}