Grails - user - HQL, criteria, pagination, and counts; grails hql 分页

 

//设置count查询字符串 比较神奇的地方时count(t)用对象也可以,用count(1)就报错了
 StringBuilder selectCount = new StringBuilder("select count(t) ")
//设置内容查询字符串
        StringBuilder selectData = new StringBuilder("select  a.column1,a.column2 ")
//设置后续拼接字符串
        StringBuilder sb=new StringBuilder("  from table t  ")

/**查询结果列表 ,用closure接受分页,排序参数
  *max: params.max  每页显示数目 
  *offset: (params.offset?params.offset:params.max)  开始查询条数,like fromIndex
  *sort:params. sort ?params. sort :"columnSample"  排序字段
  *order:params.order?params.order:"asc"    排序方式,asc\desc
**/
 def result=CheckAttendance.executeQuery(selectData.append(sb).toString(),[max: params.max, 
        offset: (params.offset?params.offset:params.max),
        sort:params.  sort ?params. sort :"columnSample",
        order:params.order?params.order:"asc"])
//查询总数
        int total=(Integer)CheckAttendance.executeQuery(selectCount.append(sb).toString()).get(0)

问题:发现executeQuery不支持排序,所以只能用hql排序,那么查询总数只能放在排序的前面
int total=(Integer)CheckAttendance.executeQuery(selectCount.append(sb).toString()).get(0)
        if (params.sort && params.order)
        {
            sb.append(" order by "+params.sort + " "+params.order)
        }

感想:都是foreigners帮忙解决的,中文根本没用,万恶的世界最大局域网

你可能感兴趣的:(Grails - user - HQL, criteria, pagination, and counts; grails hql 分页)