Grails “关于圣杯的新手问题”;“创建标准”;
我是Grails criteria builder的新手,有人能解释一下下面的意思吗Grails “关于圣杯的新手问题”;“创建标准”;,grails,criteria,Grails,Criteria,我是Grails criteria builder的新手,有人能解释一下下面的意思吗 def c = Account.createCriteria() def results = c { like("holderFirstName", "Fred%") and { between("balance", 500, 1000) eq("branch", "Lon
def c = Account.createCriteria()
def results = c {
like("holderFirstName", "Fred%")
and {
between("balance", 500, 1000)
eq("branch", "London")
}
maxResults(10)
order("holderLastName", "desc")
}
这意味着什么
)从帐户中选择* holderFirstName如“fred%”和 (余额在500和1000之间**和** 分行(伦敦
)从帐户中选择* holderFirstName如“fred%”和 (余额在500和1000之间**或** 分行(伦敦
如果我想同时使用“或”和“和”怎么做?您的示例将执行为:
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")
}
嵌套
和
/或
闭包以获得更复杂的条件。您的示例将按以下方式执行:
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")
}
将您的
和
/或
闭包嵌套在更复杂的标准中。您当前的标准在平衡和分支的两种条件中表示“和”。所以
从帐户中选择*,其中holderFirstName(如“fred%”和(余额介于500和1000之间)是正确的,只是它最多可以保存10个结果,并将根据“holderLastName”按降序排序
要同时使用和以及或,您还需要在条件中指定一个或块,这样您的条件看起来就像
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")
}
在该标准中,平衡和分支条件之间存在和。此外,prop1和prop2之间的或您当前的标准在平衡和分支的两种情况下表示“和”。所以 从帐户中选择*,其中holderFirstName(如“fred%”和(余额介于500和1000之间)是正确的,只是它最多可以保存10个结果,并将根据“holderLastName”按降序排序 要同时使用和以及或,您还需要在条件中指定一个或块,这样您的条件看起来就像
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")
}
在该标准中,平衡和分支条件之间存在和。以及prop1和prop2之间的或