根据查询参数过滤搜索结果

时间:2019-04-24 08:17:23

标签: grails groovy

利用Grails动态编程,我想创建一个逻辑,当没有提供查询参数时将列出所有结果,并在提供单个或多个查询参数时仅过滤那些条目。

例如

具有参数名字,姓氏,年龄和地址的域类 A

def func(){
  def c = A.createCriteria()
  def results = c.list(){
    like('lastName', params.lname)
  }
  return [results: results]
}

当提供某些查询参数时,此代码返回一些输出。如果未提供查询参数,则仅返回一个空结果列表。是否可以在一个函数中完成所有这些操作。

我希望它查找提供的查询参数并相应地过滤结果,如果没有给出查询参数,则返回所有条目。

1 个答案:

答案 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)
        }
    }
}