我有一个搜索输入列表(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)
}
答案 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)
}
}