利用Grails动态编程,我想创建一个逻辑,当没有提供查询参数时将列出所有结果,并在提供单个或多个查询参数时仅过滤那些条目。
具有参数名字,姓氏,年龄和地址的域类 A 。
def func(){
def c = A.createCriteria()
def results = c.list(){
like('lastName', params.lname)
}
return [results: results]
}
当提供某些查询参数时,此代码返回一些输出。如果未提供查询参数,则仅返回一个空结果列表。是否可以在一个函数中完成所有这些操作。
我希望它查找提供的查询参数并相应地过滤结果,如果没有给出查询参数,则返回所有条目。
答案 0 :(得分:1)
在like('lastName')之前添加if(params.lname),以便在未提供查询参数的情况下返回所有条目。
def results = A.createCriteria().list(params){
or{
if(params.lname){
ilike('lastName', '%${params.lname}%')
}
if(params.fname){
eq('firstName', params.fname)
}
}
}