【问题标题】:Spring-MVC, Hibernate, Postgres : Searching in database with multiple variablesSpring-MVC、Hibernate、Postgres:使用多个变量在数据库中搜索
【发布时间】:2015-05-07 14:03:15
【问题描述】:

我正在开发一个 Spring-MVC 应用程序,我想在数据库中搜索用户选择的选项组合。所以假设有10个选项,如果用户选择其中的7个,我怎样才能有效地在DAO中编写一个可以适应选项数量的单一查询的单一方法。请看下图:

正如您在左侧看到的那样,有多个选项,用户可以选择用户选择的任何一个。我正在寻找类似的东西,我创建了一个搜索对象实体,并且我想将此实体传递给 dao,其中将提取其变量并在数据库中执行搜索。

但如果有 3 个变量,我会看到查询看起来像:

伪代码:

public ResultObject doSearch(var1, var3, var3){
if((var1==true)){
// hibernate query for search where var1 equals true
}
if(!(var2==null)&&(var1==true)){
//Hibernate query for search where var2 is set by user and var1 is true
}
}

但是,如果我继续以这种可怕的方式这样做,我将永远完成不了。当只应包含一组变量而丢弃其他变量时,如何处理多个搜索变量。请告诉我。谢谢。

【问题讨论】:

    标签: java spring hibernate postgresql spring-mvc


    【解决方案1】:

    使用 StringBuilder。只要变量彼此独立,这应该会更容易。

    StringBuilder sb = new StringBuilder();
    
    sb.append("FROM phone WHERE 1=1 ");
    
    
    if (var1) {
        sb.append(" AND var1 = :var1");
    }
    
    if (var2) {
        sb.append(" AND var2 = :var2 ");
    }
    
    sb.toString();
    

    【讨论】:

    • 这看起来很有希望,我想我也可以将它用于布尔值和其他值。是的,它们是独立的,我为它们创建了一个对象模型,因为我还需要保存搜索历史。看起来还是有点手动,我原以为可能有一些高级机制,因为那里可能有 50-60 个搜索参数或更多的项目,那么这会变得乏味。
    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2015-01-25
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2015-09-17
    相关资源
    最近更新 更多