[英]Newbie question on grails “createCriteria”
我是 Grails 标准构建器的新手,有人可以解释以下是什么意思吗?
def c = Account.createCriteria()
def results = c {
like("holderFirstName", "Fred%")
and {
between("balance", 500, 1000)
eq("branch", "London")
}
maxResults(10)
order("holderLastName", "desc")
}
是不是意味着
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
')如果我想同时使用“或”和“和”,我该怎么做?
您的示例将执行为:
select * from account
where holderFirstName like 'Fred%'
and balance between 500 and 1000
and branch = 'London'
所有顶级条件都被暗示为“与”在一起。 您可以创建与以下相同的条件:
def c = Account.createCriteria()
def results = c {
like("holderFirstName", "Fred%")
between("balance", 500, 1000)
eq("branch", "London")
maxResults(10)
order("holderLastName", "desc")
}
要获得第二个查询,请使用此标准:
def c = Account.createCriteria()
def results = c {
like("holderFirstName", "Fred%")
or {
between("balance", 500, 1000)
eq("branch", London")
}
maxResults(10)
order("holderLastName", "desc")
}
嵌套您的and
/ or
闭包以获得更复杂的标准。
您当前的标准在平衡和分支两个条件中意味着“和”。 所以
Select * from account where holderFirstName like 'fred%' and (balance between 500 and 1000 and branch='london') 是正确的,只是它将容纳最多 10 个结果,并将根据 "holderLastName" 降序排序.
要同时使用and和or ,您还需要在标准中指定or块,因此您的标准看起来像
Account.createCriteria()
def results = c {
like("holderFirstName", "Fred%")
and {
between("balance", 500, 1000)
eq("branch", "London")
}
or{
eq("prop1", prop1)
eq("prop2",prop2)
}
maxResults(10)
order("holderLastName", "desc")
}
在此标准中,平衡条件和分支条件之间存在and 。 也是 prop1 和 prop2 之间的or
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.