使用条件组合优化搜索查询

时间:2014-04-08 07:43:15

标签: algorithm search grails if-statement

我有一个搜索输入列表(4个搜索输入),作为标准,我必须组合以获取书籍列表(按作者,按出版日期,按名称,按页数)

这是代码

if((author!="") && (date!="")&&(name!="")&&(numPages!="")){

        //query getting the books with th 4 criteria 
        }else{ if((author!="") &&(name!="")&&(numPages!="") ){
                        //query getting the books with th 3 criteria 

}   
 } etc 

是否有更好的方法来组合这些标准

修改 这是带有标准的查询之一:

def invoiceListbyAll=Invoice.createCriteria().list {
            eq("author", authorObj)
            eq("name", name)
            eq("numPages", numPages)

        }

1 个答案:

答案 0 :(得分:1)

你可以把它写成:

def invoiceListbyAll=Invoice.createCriteria().list {
    // from your code I assume that all parameter are strings
    if (author) { // groovy empty strings act as boolean false
        eq("author", authorObj)
    }
    if (name) {
        eq("name", name)
    }
    if (numPages) {
        eq("numPages", numPages)
    }

}