文档章节

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

KingSirLee
 KingSirLee
发布于 2014/07/14 10:39
字数 199
阅读 1K
收藏 1

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参数,这样就不用在查询闭包里设置分页参数了

 

© 著作权归作者所有

上一篇: GoogleMapAPI
KingSirLee
粉丝 3
博文 26
码字总数 7500
作品 0
杭州
程序员
私信 提问
grials中List的totalCount属性

今天在对数据进行分页查询的时候,用了List的.count的属性,结果所有数据都被显示出来,限制条件没起作用。 后来查阅后发现,应该使用的是totalCount属性。 《grails技术精解与web开发实践》...

文七辰
2013/11/02
433
0
【Hibernate】 Criteria Queries (条件查询)

Criteria Queries 提供了类别安全的查询,可以替代HQL、JPQL和本地SQL查询。 Criteria queries 是通过如下三个类完成的。 Criteria: 一次查询 Criterion: 一个查询条件 Restrictions:查询条...

666B
2014/07/07
131
0
selfly/dexcoder-assistant

#Dexcoder快速开发辅助工具包 该通用dal是在开发过程中,对于简单封装的通用dao或数据访问层使用深感痛苦与不便,由此进行了整合和改进发展而来。 如果你不喜欢用、这类ORM框架,喜欢或,那么...

selfly
2015/12/24
0
0
Hibernate--Criteria Query and DetachedCriteria

Criteria Query通过面向对象的设计,将数据查询条件封装为一个对象。简单来说,Criteria Query可以看作是传统SQL的对象化表示,如: 这里的criteria实例本质上是对SQL“select * from t_use...

冷冷gg
2015/06/20
46
0
Spring Data Jpa(分页、Specification、Criteria)

分页的主要接口与类 PagingAndSortingRepository 继承自 CrudRepository 接口,提供了排序以及分页查询能力,提供了两个方法 虽然 PagingAndSortingRepository 接口中只有 findAll 方法,但是...

林塬
2018/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深度残差收缩网络

深度残差网络ResNet获得了2016年CVPR会议的最佳论文奖,截至目前,在谷歌学术上的引用量已经达到了38295次。 深度残差收缩网络是深度残差网络的一种新颖的改进版本,其实是深度残差网络、注意...

深度研究员
4分钟前
19
0
聊聊artemis的scheduledDeliveryTime

序 本文主要研究一下artemis的scheduledDeliveryTime HDR_SCHEDULED_DELIVERY_TIME activemq-artemis-2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/......

go4it
10分钟前
3
0
Guide to the Synchronized Keyword in Java

1. Overview This quick article will be an intro to using the synchronized block in Java. Simply put, in a multi-threaded environment, a race condition occurs when two or more th......

Ciet
19分钟前
11
0
Spring AOP-00-开篇

AOP联盟为增强定义了org.aopalliance.aop.Advice接口,Spring支持5种类型的增强。本章3.3节中使用到的@Before、@After等注解是基于AspectJ实现的增强类型。其实Spring也支持很多增强类型,S...

moon888
26分钟前
9
0
Vue造轮子-Tabs测试(下)

1. 如果g-tabs里面不是g-tabs-head,g-tabs-body期望会报错。 // 目前没有报错,所以先改 // tabs.vue if(this.$children.length===0){ // 这个$children是看子组件,不是子元...

ories
38分钟前
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部