grails的criteria和hql查询

Grails Grails 与 Hibernate   Grails 与 Hibernate 如果 GORM (Grails Object Relational Mapping)没有你想象的那么足够灵活,作为选择,你可以使用Hibernate映射你的domain类. 要做到这点,需要在你项目的grails-app/conf/hibernate目录创建一个hibernate.cfg.xml文件并为你的domain类对应HBM映射文件 ... 阅读详情

grails在查询方面也保留了hibernate的hql和criteria查询功能,hql自然不必多说基本不会有什么变化,grails的criteria查询在hibernate上面做了微调使用起来更加方便了,这次就这两个特点分享下我这几天的所学

1.grails的criteria查询

先来个简单的,通过criteria来构造一个in条件查询

def  useCriteria2(){
        def c=CityInfo.createCriteria()
        def result=c.list{
           'in'("id",[1,2,3])
        }
        Iterator<CityInfo> it=result.iterator()
        def buf=new StringBuffer();
        while(it.hasNext()){
            CityInfo info=it.next()
            buf.append(info.getName()+"-")
        }
        render buf.toString()
    }

这里查询的是id在1,2,3这个集合里城市信息,来看看结果:

接下来弄个稍微复杂一点的,弄个范围查询和模糊查询综合起来的例子

def  useCriteria(){
        def c=CityInfo.createCriteria()
        def result=c.list{
             gt("id",3)
             and{
                 like("name","%兴%")
             }
        }
        Iterator<CityInfo> it=result.iterator()
        def buf=new StringBuffer();
        while(it.hasNext()){
            CityInfo info=it.next()
            buf.append(info.getName()+"-")
        }
        render buf.toString()
    }

and里面可以写多个条件,当然了如果是or条件也可以这样用,上面的程序运行效果如下:

2.grails的hql查询

def useHql(){
        def hql="from CityInfo where id>:id  and code in:code"
        def result=CityInfo.executeQuery(hql,["id":2,code:["NB","NJ"]])
        response.setHeader("Content-Type","text/html; charset=UTF-8")
        [result:result]
    }

这个查询相信大家都看得懂,这里我想稍微做下扩展,应为默认情况下grails使用gsp或者jsp作为视图页面,个人觉得学习gsp会增加学习成本,jsp的话也不是太方便,velocity用的也不多,因此打算使用freemarker来作为视图。

由于grails并没有默认支持freemarker,因此要在项目里添加这个插件,由于版本的差异安装插件的方式也有所不同

(1)grails 1.x的版本

使用命令:grails install-plugin  插件的路径

(2)grails 2.x的版本

打开BuildConfig.groovy,找到plugins节点,在花括号的最后加上 compile ":freemarker:0.1.1",如下所示:

图上的0.1.2是为了能让大家看到那个黄色的提示改的,用0.1.1版本就足够我们用了,加上之后点一下红色箭头所指的地方或者重启下项目,插件就安装成功了


接下来就是jar包了,我们要在lib下面加上freemarker的jar包,这个jar包到struts2里面可以找到,这步完成后如果freemarker插件文件有编译错误的话就要把freemarker的jar包引入构建路径,如下所示:


到这一步为止,我们就可以使用freemarker了,上面的useHql的视图页面如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>查询结果</title>
</head>
<body>
<#list result as item>
    ${item.id}, ${item.name}<br/>
</#list>
</body>
</html>


这里的result是返回的map对应的key,这样子数据就显示出来了

安装插件的时候要注意,如果版本选不对,那么一切工作都是徒劳。官网说的那个0.4版本我试过貌似用不成

17、数据库查询、迁移及服务相关技术详解 本博客详细介绍了在 Grails 应用中使用 HQL 和 Criteria 进行数据库查询的方法,以及通过原生 SQL 查询实现更灵活的数据库操作。同时,对数据库迁移工具 dbmigrate 和 LiquiBase 插件进行了对比分析,介绍了如何在非 Grails 环境中使用 GORM,以及服务的创建、调用和初始化方式,帮助开发者更好地管理业务逻辑和事务控制。 阅读详情

相关推荐

grails增删改查(初学者必备)

直接导入运行,带MYSQL数据库 我学GRAILS时候做的增删改查! 总共两个表一个是管理员的 一个是 用户表

面向初学者的Grails教程-HQL查询(executeQuery和executeUpdate)

该Grails教程将教授使用HQL的基础知识。 Grails支持动态查找器,这使执行简单的数据库查询变得很方便。 但是对于更复杂的情况,Grails提供了Criteria API和HQL。 本教程将重点讨论后者。 介绍 众所周知,Grails位于Spring和Hibernate(这是两种最受欢迎​​的Java框架)的顶部。 Hibernate用作Grails对象关系映射(GORM)的基础...

648

2024年上半年网络工程师下午真题及答案解析

位于MPLS域边缘、连接其他网络的LSR称为( 3 ),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时,MPLS入口设备分析IP报文的内容并为其添加合适的标签,所有MPLS网络中的LSR根据标签转发数据,当该IP报文离开MPLS网络时,标签由出口LER弹出。LSP的出口LER称为( 6 )。某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。

bsefef的博客 2475

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

def index(Integer max) { params.max = Math.min(max ?: 10, 100) 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.

csdn学子 238

银河麒麟V10安装docker

最近在做的一个信创项目使用的操作系统是银河麒麟高级服务器V10,在安装docker时,会遇到下面的错误。 nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-20.10.0-3.el7.x86_64 经过分析,以下依赖包是centos系统中的包,所以需要给kylinos创建一个合适的centos源。经过实验,Kylin Linux Advanced Server V1

m0_38004228的博客 4908

鸿蒙【ArkTS】使用TS装饰器封装网络请求HTTP

在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的@ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。这里采用TS的装饰器实现AOP效果 完成前后端接口风格的统一

weixin_60376559的博客 5611

CentOS 7 下Oracle 11G RAC自动化部署实践指南

本文详细介绍了在CentOS 7操作系统上,通过静默安装方式自动化部署Oracle 11g RAC集群的完整实践指南。内容涵盖部署前的网络与存储规划、系统环境准备与调优、共享存储配置(UDEV/多路径)、Grid Infrastructure静默安装、数据库软件安装与集群数据库创建等核心步骤,并提供了关键的避坑指南,旨在帮助DBA高效、可靠地完成RAC集群的自动化搭建。

q6r7s8t9的博客 676

期权专题9:雪球期权(一)(BSM+蒙特卡罗定价)

python;雪球定价;蒙特卡罗

mhmh123789的博客 8104

Grails实战教程-整合版

现如今,基于Java的网站开发明显过于复杂,远超实际工作需要。在Java领域中,大部分的网站开发框架也没有严格的遵循“可重用”原则。动态框架如Rails,Django和TurboGears等的出现,为Java网站开发提供了新思路,Grails就是基于这种新思路构建而成的。Grails大大降低了Java领域中网站开发的复杂度,它建立在已有技术如Spring和Hibernate之上。简单理解,Grails是一个框架,特点是整合先进技术,本质是专注抱大腿。哈哈,开个小玩笑,Grails可不是只有那么简单。Grails通过其核心技术及扩展插件使网站开发中的很多难题都得以解决,如果非要列一个清单的话,主要应包括:一个基于Hibernate且易于使用的对象关系映射(ORM)层一个被称作GSP的页面展示技术一个基于Spring MVC的控制器层一个基于Gradle的交互式命令行环境一个内嵌的且已配置为热部署的Tomcat服务器Spring的依赖注入技术使用Spring的MessageSource实现国际化(i18n)一个基于Spring事务抽象的事务层借助功能强大的Groovy编程语言,外加领域专用语言(DSLs)的广泛运用,你会惊喜的发现,做网站竟然也能如此简单。

【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置

关于Lighttools8.4.0软件的安装教程,详见我的另一篇博文:【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程 在本文中,我们将学习到,光度学的基本概念、系统初始设置、物体模型坐标的使用方法、简单光学系统实例、系统浏览器的作用和内容、设置虚拟相机并渲染视图中的图像、仿真结果3D显示等。 如果有其他感兴趣的内容但是我又没有写的,欢迎在评论区留言! 光度学的基本概念 软件的基本介绍 参考博文:https://www.docin.c...

LeonJin的博客 2万+

Ubuntu终端接入Codex:一行脚本搞定AI编程助手安装与配置

在开发者日常工作中,命令行终端是最高频的操作环境,而AI编程助手的出现正在改变传统的编码方式。通过将大模型能力与终端工具链结合,开发者无需切换窗口即可完成命令查询、代码生成、项目理解和自动执行等任务。Ubuntu作为服务器和开发机的主流系统,搭配Node.js生态和API Key认证,即可在本地闭环运行AI助手。本文从环境准备、密钥配置、权限管理到自动化脚本封装,系统拆解在终端中接入Codex的完整流程,并分享高频用法与实测排障经验,帮助开发者安全、高效地让AI融入命令行工作流。

weixin_29061041的博客 322

Grails文档3.2.5 | 21章 - 22章

一个模型(Model)就是一个Map对象,模型(Model)的作用是,为视图(View)的渲染提供基础数据。在进行数据绑定时,会自动去除字符串前后空白,即trim操作。Grails常常用约定来代替配置,而在模型(Model)与视图(View)之间,就存在着一些约定。控制器,控制器Controller主要用于处理请求以及响应请求,响应请求的方式可以是直接响应(关键词render)或者间接响应(委托视图View)。因此,如果在预期位置没有找到GSP页面,但存在相应的JSP页面,那么,此JSP页面将被予以使用。

lcl417891235的博客 752

机器学习实战5-天气预测系列:利用数据集可视化分析数据,并预测某个城市的天气情况

大家好,我是微学AI,最近天气真的是多变啊,忽冷忽热,今天再次给大家带来天气的话题,机器学习实战5-天气预测系列,我们将探讨一个城市的气象数据集,并利用机器学习来预测该城市的天气状况。该数据集包含年平均温度和湿度等信息。

微学AI的博客 1万+

grails 教程_Grails初学者教程– Criteria API

grails 教程 本教程将展示如何使用Criteria API从数据库中搜索数据。 Criteria是功能强大的API,是HQL的优雅替代方案。 介绍 上一篇文章表明HQL是执行复杂查询的强大方法。 但是,如果HQL语句不固定并且需要连接,这不是很优雅。 例如:如果仅当参数不为null时才需要查询数据库,则我们的代码将如下所示: def hqlQueryString = "from P...

194

YOLOv11训练:Roboflow免费数据集获取与格式转换超详细教程

公共数据集库:包含超过20,000个开源数据集数据标注工具:支持在线标注和团队协作数据预处理:自动增强、扩充和格式化版本控制:像管理代码一样管理数据集版本多格式导出:支持所有主流目标检测格式import cv2# 加载图像# 加载标注# 数据增强# 调整尺寸# 调整标注坐标# 转换为Tensor# 实现保持长宽比的resize逻辑pass# 坐标转换逻辑pass# 数据增强实现pass数据集选择优先选择Roboflow上标注质量高的官方数据集。

weixin_39818775的博客 2362

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Grails GORM查询总结

GORM绝对是Grails框架的一大亮点。GORM基于Hibernate的ORM之上做二次封装,既有Hibernate强大的功能,又有使用简便的特点。本篇主要总结和类比在项目开发中用到的GORM查询方式。 GORM支持的查询方式 GORM底层使用Hibernate,所以支持Hibernate的所有查询方式,此外,还支持Dynamic fi...

weixin_33860528的博客 768

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

GORM或Hibernate查询或更新部分属性

若想查询一个POJO类的部分属性,如 @Entity class Captcha { String str String bak static constraints = { bak(nullable: true) } } 若只想查询str,不查bak。可以通过HQL或C...

weixin_34400525的博客 179

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

20130517-Grails In Action-4、让模型工作(06小节)

1、Criteria(条件查询) Criteria可以通过createCriteria 或者 withCriteria 方法来使用 1 def user = User.findByUserId(params.user) 2 def entries = Post.createCriteria().list { 3 and { 4 ...

该页无法显示 114

Hibernate many-to-many 查询写法

« TTServer Java 客户端 Tyrond用 HttpServletResponseWrapper 实现 Etag 过滤器 » Hibernate many-to-many 查询写法 发表于:2009年7月18日 | 分类:groovy &amp; grails | 标签: grails, hibernate, hql, many-to-many, query |...

rongdmmap的博客 363

GORM 开发实例

记录 GORM 开发实例

杨波的专栏 635

Groovy on rails 入门(M-2)

  grails的CRUD就真的是简单死了,基本上都是一句话搞定:   create save() read get(id) update save() ...

Star_of_Ice的专栏 261

探索Grails数据映射:一个经典ORM解决方案的重生

探索Grails数据映射:一个经典ORM解决方案的重生 项目介绍 在Java和Groovy的世界里,有一颗曾经由VMware, Inc.细心培育的璀璨明珠——Grails Data Mapping。虽然VMware已不再对其进行主动维护,但这并不意味着它的光芒消退。相反,这一宝贵的资源如今迁移到了更广阔的天地——Grails组织的怀抱之中,继续以其强大的功能服务开发者社区。这是一篇关于重新发现和探...

gitblog_00519的博客 984

Grails初学者教程– Criteria API

本教程将展示如何使用Criteria API从数据库中搜索数据。 Criteria是功能强大的API,是HQL的优雅替代方案。 介绍 上一篇文章表明HQL是执行复杂查询的强大方法。 但是,如果HQL语句不固定并且需要连接,这不是很优雅。 例如:如果仅当参数不为null时才需要查询数据库,则我们的代码将如下所示: def hqlQueryString = "from Person whe...

236

GRAILS 分页 查询

在做grails的查询分页的时候,发现一个问题,那就是输入的查询参数不能作为条件在分页之间传递,而且如果做分页查询的总数也不得而知,针对多条件criteria查询(也适用于HQL查询)做了如下实现,代码如下: 最主要的是蓝色标注的部分,创建新的criteria,用projection的rowCount()方法,统计总条数,查询条件要保持一致,然后制定参数传递给view。 def booking...

johsonwon的专栏 324

Grails GROM查询

前文已经介绍了如何对Domain Class进行持久化,然而光存不查,那是没有什么意义的。因此,本篇将介绍持久化操作的另一面:查询。最基本的查询有两种:罗列全部实例和获取单个实例,它们分别对应Domain Class的list和get方法。使用例子如下:列举全部:Book.list()分页并排序(这些参数不需要同时出现,按需使用即可):Book.list(offset:10, max:20, sort:"asc", order:"title")获取单个实例:Book.get(23)获取多个实例:Book.g

至今、的专栏 2119
上一篇: grails一对一关联关系
下一篇: grails过滤器和数据查询的几个重要方法
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值