关于grails"createCriteria"的新手问题

Sap*_*Sap 1 grails criteria

我是Grails标准建设者的新手,有人可以解释以下是什么意思吗?

def c = Account.createCriteria()
         def results = c {

             like("holderFirstName", "Fred%")
             and {
                 between("balance", 500, 1000)
                 eq("branch", "London")
             }
             maxResults(10)
             order("holderLastName", "desc")
         }
Run Code Online (Sandbox Code Playgroud)

这是不是意味着

  • Select * from account where holderFirstName like 'fred%' and (balance between 500 and 1000 **and** branch='london")
  • Select * from account where holderFirstName like 'fred%' and (balance between 500 and 1000 **or** branch='london")

如果我想一起使用"或"和"和",我该怎么做?

jam*_*man 8

您的示例将执行为:

select * from account 
where holderFirstName like 'Fred%' 
and balance between 500 and 1000 
and branch = 'London'
Run Code Online (Sandbox Code Playgroud)

所有顶级条件都隐含在一起进行"与"运算.您可以创建相同的Criteria:

def c = Account.createCriteria()
def results = c {
    like("holderFirstName", "Fred%")
    between("balance", 500, 1000)
    eq("branch", "London")
    maxResults(10)
    order("holderLastName", "desc")
}
Run Code Online (Sandbox Code Playgroud)

要获得第二个查询,请使用此条件:

def c = Account.createCriteria()
def results = c {
    like("holderFirstName", "Fred%")
    or {
        between("balance", 500, 1000)
        eq("branch", London")
    }
    maxResults(10)
    order("holderLastName", "desc")
}
Run Code Online (Sandbox Code Playgroud)

嵌套您的and/ or关闭以获得更复杂的标准.