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"。例如以下所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Fsa2NvZGU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="292" width="700" alt="">

图上的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版本号我试过貌似用不成

grails的criteria和hql查询的更多相关文章

  1. Hibernate 、Hql查询和Criteria查询

    HQL查询: public Object query(String name){ Session s=null; try{ s=HibernateSessionFactory.getSession() ...

  2. hibernate框架学习笔记7:HQL查询、Criteria查询简介

    HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cus ...

  3. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

  4. Hibernate框架之HQL查询与Criteria 查询的区别

    Hibernate框架提供了HQL查询和Criteria 查询.下面对这两种查询分别做个例子.也好对这两种查询方法有个大概的了解.就用房屋信息表做例子,查询所有房屋信息. HQL语句查询所有房屋信息: ...

  5. [NHibernate]HQL查询

    目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这 ...

  6. hibernate学习(7)——HQL查询

    1.HQL查询定义 Hibernate查询分类: 1. get/load 根据OID检索 2. 对象视图检索 c.getOrders 3. Sql语句 createSqlQuery 4. Hql语句 ...

  7. NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)

    摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4. ...

  8. HQL查询语句

    查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...

  9. hibernate的hql查询

    1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...

随机推荐

  1. win10使用自带虚拟机没有Hyper-V场景

    开始咯~ 1.打开控制面板-程序和功能-启用或关闭Windows功能 2.发现下面并没有Hyper-v 真难受~~~   然后百度了一下原来是家庭版的win10没有.那就只能往下面看咯~ 3.在桌面添 ...

  2. Redux 和 mobx的区别

    Redux: Redux将数据保存在单一store中,Mobx将数据保存在分散的多个store中 Redux需要手动处理变化后的操作,Mobx使用observable保存数据,数据变化后自动处理响应的 ...

  3. 微信小程序---协同工作和发布

    (1)协同开发和发布 在中大型的公司里,人员的分工非常仔细,一般会有不同岗位角色的员工同时参与同一个小程序项目.为此,小程序平台设计了不同的权限管理使得项目管理者可以更加高效管理整个团队的协同工作. ...

  4. 第4节 hive调优:动态分区调整问题

    执行如下截图中的语句时卡住了: 原因:yarn未启动,hive底层是要提交mapreduce到yarn上才能计算结果的. 之前启动yarn时,未执行jps查看是否已经启动.其实未启动成功: [root ...

  5. 2018美赛准备之路——Matlab基础——命令行功能函数

    clc 清屏(只清除显示内容) clear  清除所有变量(运算结果) who  显示workspace的所有变量 whos  详细显示workspace的所有变量  help sin 显示sin函数 ...

  6. Python自动化测试框架——生成测试报告

    如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢? 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前,我们需要下载HTMLTestRunner.py ...

  7. LeetCode(171) Excel Sheet Column Number

    题目 Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, re ...

  8. 杭电 2120 Ice_cream's world I (并查集求环数)

    Description ice_cream's world is a rich country, it has many fertile lands. Today, the queen of ice_ ...

  9. 【HIHOCODER 1043】题目1 : 完全背包

    描述 且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了! 等等,这段故事为何似曾相识?这就要从平行宇宙理论说起了---总而言之,在另一个宇宙中,小 ...

  10. 数据结构实验2:C++实现单链表类

    太简单了,直接贴题目然后上代码. 题目: 实验2 2.1 实验目的 熟练掌握线性表的链式存储结构. 熟练掌握单链表的有关算法设计. 根据具体问题的需要,设计出合理的表示数据的链式存储结构,并设计相关算 ...