码迷,mamicode.com
首页 > 其他好文 > 详细

grails的criteria实现复合查询并实现结果分页

时间:2014-07-22 08:16:36      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:des   使用   os   io   re   c   

def search = {
        if(!params.max) params.max = 10
        if(!params.offset) params.offset = 0
        def searchClosure =  {
            if(params.categoryName) {
                category{
                    eq(‘categoryName‘, params.categoryName);
                }
            }
            if(params.title) {
                like(‘title‘,"%${params.title}")
            }
            if(params.priceLow) {
                ge(‘price‘, new BigDecimal(params.priceLow))
            }
            if(params.priceHigh) {
                le(‘price‘, new BigDecimal(params.priceHigh))
            }
            if(params.description) {
                like(‘description‘, "%${params.description}")
            }
        }
        def c = Goods.createCriteria();
        params.sort = "price"
        params.order = "asc"
        def goodList = c.list (params, searchClosure)
//        def goodsCount = c.count (searchClosure)
        def goodsCount = goodList.totalCount
        println goodsCount
        render (view: ‘list‘, model: [goodsInstanceList: goodList, goodsInstanceTotal: goodsCount])
    }

使用闭包封装查询条件如上面的searchClosure闭包,这样就可以重复使用查询条件了,
在list的时候会返回一个PagedResultList类型,里面就有totalCount属性,表示符合查询条件的记录数,这样就不用count了。在list的时候可以传入分页参数组成的map如上面的params参数,这样就不用在查询闭包里设置分页参数了

 

grails的criteria实现复合查询并实现结果分页,布布扣,bubuko.com

grails的criteria实现复合查询并实现结果分页

标签:des   使用   os   io   re   c   

原文地址:http://my.oschina.net/KingSirLee/blog/290352

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!