看过几篇写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
分享到:
相关推荐
在Grails这个基于Groovy的敏捷开发框架中,实现分页功能对于任何Web应用程序都是至关重要的,特别是当处理大量数据时。Grails提供了一些内置的支持,但如果你需要在自定义的控制器和视图中实现分页,那么就需要遵循...
**Grails框架数据查询** Grails是一个基于Java平台的开源Web应用框架,它采用Groovy语言,提供了MVC(Model-View-Controller)架构模式,旨在简化开发过程,提高开发效率。在Grails中,数据查询是核心功能之一,...
GORM查询还支持布尔逻辑操作符,这为复合条件查询提供了极大便利。开发者可以使用AND和OR操作符来组合多个查询条件,以实现更复杂的查询逻辑。 在操作过程中,GORM提供的查询方式不仅限于上述内容,还包括criteria...
本篇教程将介绍如何在Grails应用中创建一个根据产品编号进行组合查询,并以分页形式展示查询结果的功能。 首先,我们关注用户界面部分。在`list.gsp`页面上,我们需要添加一个“查找产品编号”的链接,用于触发查询...
Grails提供了方便的分页API,可以轻松地在控制器(Controller)中实现分页逻辑,并在视图(View)中展示结果。在这个例子中,你可能已经掌握了如何实现这一功能。 4. **数据库管理**:`contact_dev.sql`文件可能是...
Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式,允许开发者快速构建...
2. **MVC架构**:Grails采用MVC模式组织应用程序,将业务逻辑、用户界面和数据访问分离,有利于团队协作和代码复用。在Grails中,Controller处理请求,View呈现结果,Model则存储和管理业务数据。 3. **GORM...
例如,可以创建一个`student_list.gsp`页面,展示所有学生信息,并通过AJAX实现无刷新的查询和分页功能。 五、查询功能与安全性 查询功能通常通过控制器(Controllers)实现,它们接收用户的请求,调用服务层...
用户可以创建可复用的Grails脚本,并利用事件来扩展脚本功能。Grails还支持Ant和Maven,这意味着可以利用这两种构建工具的生态来管理Grails项目。 对象关系映射(GORM)是Grails框架中的一个重要组成部分,它为...
通过阅读《Grails 入门指南》并实践其中的示例,你将能够熟练掌握Grails开发的基础技巧,为进一步深入学习和开发复杂的Grails应用程序做好准备。无论你是对Grails感兴趣的学生,还是寻求技术转型的开发者,这本书都...
- 安装完成后,确保设置`GRAILS_HOME`环境变量,并将其路径添加到系统的`PATH`变量中,确保这两个变量都在同一级别(用户级或系统级)。 - 打开命令行,输入`grails`,如果显示帮助信息,表明Grails已成功安装。 ...
Grails 插件系统是其强大功能之一,允许开发者复用和扩展已有功能。例如,有用于认证、缓存、邮件发送等的插件,可以快速集成到项目中。 **Grails Command Line Interface (CLI)** Grails 提供了一个强大的命令行...
- 支持分离的条件查询(DetachedCriteria),用于构建可重用的查询条件。 - 支持Hibernate查询语言(HQL),提供了一种SQL风格的查询方式。 **高级GORM特性** - 支持事件和自动时间戳,简化了审计信息的记录。 - 支持...
3. Controller:控制器层接收用户请求,调用模型进行业务处理,并决定视图如何显示结果。 三、Grails命令行工具 Grails提供了一套强大的命令行工具,用于快速创建项目、生成控制器、领域类、服务等。例如,`grails...
《Grails 2 的终极指南》是一本深入探讨Grails框架精髓的专业书籍,该书以英文撰写,旨在为读者提供全面、深入的Grails框架学习资料。Grails框架基于Groovy语言,是一种高度动态、敏捷的Java应用开发框架,它简化了...
解压并导入到Eclipse中,可以进一步增强Grails的开发体验。 通过以上步骤,你可以在Eclipse中舒适地开发Grails项目,利用IDE的强大功能提升开发效率。Grails的MVC架构和自动化特性,结合Eclipse的插件支持,使得...
Grails是一款基于Groovy语言的开源Web应用框架,它提供了快速开发、简洁代码以及高度可扩展性的特性。在Grails的开发过程中,掌握一些常用的快捷键可以极大地提高开发效率。以下是一些Grails开发中常用的关键操作和...
- **动态查询**:支持基于动态条件的查询操作,增加查询灵活性。 - **界面美化**:通过布局和CSS美化页面,提升用户界面的设计感。 #### 三、Grails进阶 - **安全性**: - **用户认证**:实现用户登录、权限验证...
Grails是一种基于Java...通过深入理解并实践Grails开发,你将能够快速构建出高质量的Web应用。在实际工作中,结合具体的案例,如文件名`racetrack`所代表的应用场景,不断实践和优化,将使你对Grails有更深刻的理解。
- **Plugins**:Grails插件系统允许开发者复用和扩展功能,如安全、缓存、邮件服务等。 - **配置管理**:通过`grails-app/conf/`目录下的配置文件,如`Config.groovy`,进行项目配置。 3. **控制器和视图**: - ...