`
mmBlue
  • 浏览: 167218 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Grails 复用查询条件并分页

阅读更多

  看过几篇写grails分页的,大都把简单的东西搞复杂了,而且里面都没有对查询条件复用,在分页时,求count和list的时候where条件是一样的,好点的程序员都会把where条件复用一下,在grails里面肯定是利用闭包特性重复利用了,看看下面的代码就懂了~

	def serach = {
		if (!params.max) params.max = 10
		if (!params.offset) params.offset = 0
		if (!params.sort) params.sort = "id"
		if (!params.order) params.order = "asc"
		
		def cel = {
			if(params.name){
				like("name", "%${params.name}%")
			}
			if(params.city){
				like("city", "%${params.city}%")
			}
		}
		
		def results = User.createCriteria().list(params,cel)
//		def cut = User.createCriteria().count(cel)  
		[userInstanceList: results, userInstanceTotal: results.totalCount]
	}

 看到没,del闭包重复利用了~,另外需要说明下:在list的时候,会返回一个PagedResultList类型,里面就有totalCount属性,所以注释的那段代码不用写,不然会发3条SQL了。 这里主要是利用闭包复用查询条件演示了。

 

另外说下hibernate和ibatis里面的做法,hibernate一般这样干,封装个方法:

	private Criteria getCriteria(Dept dept) {
		Criteria criteria = super.getSession().createCriteria(Dept.class);
		criteria.addOrder(Order.desc("id")); //倒序
		if (dept != null) {
			if (dept.getId() != null && dept.getId() > 0) {
				criteria.add(Restrictions.eq("id", dept.getId()));
			}
			if (StringUtils.isNotBlank(dept.getName())) {
				criteria.add(Restrictions.like("name", setPropertyValue(dept.getName())));
			}
			if(StringUtils.isNotBlank(dept.getDesp())){
				criteria.add(Restrictions.like("desp", setPropertyValue(dept.getDesp())));
			}
		}
		return criteria;
	}

 这样就可以复用啦。

ibatis里面见我另外一篇文章 :http://mmblue.iteye.com/blog/852168

分享到:
评论
1 楼 扬V幻 2013-05-10  
[flash=200,200][url][img][list]
[*]
引用
[b][/b]
[/list][/img][/url][/flash]

相关推荐

    grails实现分页技术

    在Grails这个基于Groovy的敏捷开发框架中,实现分页功能对于任何Web应用程序都是至关重要的,特别是当处理大量数据时。Grails提供了一些内置的支持,但如果你需要在自定义的控制器和视图中实现分页,那么就需要遵循...

    grails框架数据查询

    **Grails框架数据查询** Grails是一个基于Java平台的开源Web应用框架,它采用Groovy语言,提供了MVC(Model-View-Controller)架构模式,旨在简化开发过程,提高开发效率。在Grails中,数据查询是核心功能之一,...

    Grails GORM查询.pdf

    GORM查询还支持布尔逻辑操作符,这为复合条件查询提供了极大便利。开发者可以使用AND和OR操作符来组合多个查询条件,以实现更复杂的查询逻辑。 在操作过程中,GORM提供的查询方式不仅限于上述内容,还包括criteria...

    一步一步学grails(5)

    本篇教程将介绍如何在Grails应用中创建一个根据产品编号进行组合查询,并以分页形式展示查询结果的功能。 首先,我们关注用户界面部分。在`list.gsp`页面上,我们需要添加一个“查找产品编号”的链接,用于触发查询...

    学习grails框架时候自己写的例子

    Grails提供了方便的分页API,可以轻松地在控制器(Controller)中实现分页逻辑,并在视图(View)中展示结果。在这个例子中,你可能已经掌握了如何实现这一功能。 4. **数据库管理**:`contact_dev.sql`文件可能是...

    Grails Grails Grails

    Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式,允许开发者快速构建...

    Grails权威指南 Grails权威指南

    2. **MVC架构**:Grails采用MVC模式组织应用程序,将业务逻辑、用户界面和数据访问分离,有利于团队协作和代码复用。在Grails中,Controller处理请求,View呈现结果,Model则存储和管理业务数据。 3. **GORM...

    学生管理系统课程设计(grails)

    例如,可以创建一个`student_list.gsp`页面,展示所有学生信息,并通过AJAX实现无刷新的查询和分页功能。 五、查询功能与安全性 查询功能通常通过控制器(Controllers)实现,它们接收用户的请求,调用服务层...

    grails中文入门简介

    用户可以创建可复用的Grails脚本,并利用事件来扩展脚本功能。Grails还支持Ant和Maven,这意味着可以利用这两种构建工具的生态来管理Grails项目。 对象关系映射(GORM)是Grails框架中的一个重要组成部分,它为...

    Grails 入门指南+示例源码

    通过阅读《Grails 入门指南》并实践其中的示例,你将能够熟练掌握Grails开发的基础技巧,为进一步深入学习和开发复杂的Grails应用程序做好准备。无论你是对Grails感兴趣的学生,还是寻求技术转型的开发者,这本书都...

    Eclipse下搭建Grails项目

    - 安装完成后,确保设置`GRAILS_HOME`环境变量,并将其路径添加到系统的`PATH`变量中,确保这两个变量都在同一级别(用户级或系统级)。 - 打开命令行,输入`grails`,如果显示帮助信息,表明Grails已成功安装。 ...

    Grails中文参考手册

    Grails 插件系统是其强大功能之一,允许开发者复用和扩展已有功能。例如,有用于认证、缓存、邮件发送等的插件,可以快速集成到项目中。 **Grails Command Line Interface (CLI)** Grails 提供了一个强大的命令行...

    grails 中文第二版

    - 支持分离的条件查询(DetachedCriteria),用于构建可重用的查询条件。 - 支持Hibernate查询语言(HQL),提供了一种SQL风格的查询方式。 **高级GORM特性** - 支持事件和自动时间戳,简化了审计信息的记录。 - 支持...

    grails-用户手册

    3. Controller:控制器层接收用户请求,调用模型进行业务处理,并决定视图如何显示结果。 三、Grails命令行工具 Grails提供了一套强大的命令行工具,用于快速创建项目、生成控制器、领域类、服务等。例如,`grails...

    the definitive guide to grails 2

    《Grails 2 的终极指南》是一本深入探讨Grails框架精髓的专业书籍,该书以英文撰写,旨在为读者提供全面、深入的Grails框架学习资料。Grails框架基于Groovy语言,是一种高度动态、敏捷的Java应用开发框架,它简化了...

    eclipse开发grails插件

    解压并导入到Eclipse中,可以进一步增强Grails的开发体验。 通过以上步骤,你可以在Eclipse中舒适地开发Grails项目,利用IDE的强大功能提升开发效率。Grails的MVC架构和自动化特性,结合Eclipse的插件支持,使得...

    grails快捷键

    Grails是一款基于Groovy语言的开源Web应用框架,它提供了快速开发、简洁代码以及高度可扩展性的特性。在Grails的开发过程中,掌握一些常用的快捷键可以极大地提高开发效率。以下是一些Grails开发中常用的关键操作和...

    Grails入门指南 -- 针对grails1.0.4更新

    - **动态查询**:支持基于动态条件的查询操作,增加查询灵活性。 - **界面美化**:通过布局和CSS美化页面,提升用户界面的设计感。 #### 三、Grails进阶 - **安全性**: - **用户认证**:实现用户登录、权限验证...

    grails开发

    Grails是一种基于Java...通过深入理解并实践Grails开发,你将能够快速构建出高质量的Web应用。在实际工作中,结合具体的案例,如文件名`racetrack`所代表的应用场景,不断实践和优化,将使你对Grails有更深刻的理解。

    Grails权威指南.pdf

    - **Plugins**:Grails插件系统允许开发者复用和扩展功能,如安全、缓存、邮件服务等。 - **配置管理**:通过`grails-app/conf/`目录下的配置文件,如`Config.groovy`,进行项目配置。 3. **控制器和视图**: - ...

Global site tag (gtag.js) - Google Analytics