params.max = Math.min(params.max ? params.int('max') : 2, 100)
orders=OrderInfo.createCriteria().listDistinct()
对于分页,我们需要将params传递给列表,例如。 Post.list(params)
。我怎么把它传递到这里?我试过但是给出了错误。
我们还要求我得到的总数。 但是我无法在
中设置参数orders=OrderInfo.createCriteria().listDistinct()
请提供正确的代码
答案 0 :(得分:7)
如果您将params作为list
方法的第一个参数传递,则会得到PagedResultList
,其方法为getTotalCount()
。通过这个,您可以获得实例总数。
params.max = Math.min(params.max?.toInteger() ?: 25, 100)
params.offset = params.offset ? params.offset.toInteger() : 0
def orderInfoCriteria = OrderInfo.createCriteria()
def results = orderInfoCriteria.list(params) { // your criteria code ... }
log.debug "Getting ${results.size()} order infos of ${results.totalCount}"
阅读docs以获取有关critera的更多信息。
答案 1 :(得分:0)
Grails Criteria查询和分页参数
params.max = params?.max as Integer ?: 10
params.page = params?.page as Integer ?: 1
params.offset = (params.page - 1) * params.max
params.sort = params?.sort ?: "email"
params.order = params?.order ?: "asc"
params.filter = params?.filter ?: ""
params.packet = params?.packet ?: ""
def members = Member.createCriteria().list(params)
{
or
{
if(params.filter != ""){
ilike("firstName", "%" + params.filter + "%")
ilike("lastName", "%" + params.filter + "%")
ilike("email", "%" + params.filter + "%")
try {
params.filter as Long
eq("citizenId" , params.filter.toLong())
}catch (e) {
}
ilike("mobile", "%" + params.filter + "%")
}
}
}
def dataMembers = [:]
dataMembers.data = members
dataMembers.totalRecord = members.totalCount
render dataMembers as JSON
<强>输出强>
{
"data": [
{
"id":1,
"firstName":name
},
{
"id":2,
"firstName":name
}
],
"totalRecord":5
}