2
params.max = Math.min(params.max ? params.int('max') : 2, 100)
orders=OrderInfo.createCriteria().listDistinct()

对于分页,我们需要将参数传递给列表,例如。Post.list(params). 我如何在这里传递它?我试过但给出了一个错误。

我们还需要我得到的总数。但我无法设置参数

orders=OrderInfo.createCriteria().listDistinct()

请建议正确的代码

4

2 回答 2

9

如果您将参数作为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}"

阅读文档以获取有关标准的更多信息。

于 2012-04-04T13:09:29.747 回答
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
}
于 2017-01-11T06:14:55.930 回答