grails的criteria和hql查询
2014-05-04 15:06
441 查看
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版本我试过貌似用不成
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版本我试过貌似用不成
相关文章推荐
- grails的criteria和hql查询
- 【SSH】Hibernate学习(四)HQL语法、Criteria查询、查询优化
- Hibernate 的三种查询方式:HQL、Criteria、Sql
- Hibernate-HQL、Criteria、SQL实现查询对照以及增删改
- hibernate简单事例,注意事项,保存,更新,删除,session,Query,Criteria查询_Hql与Criteria查询的补充知识
- 关于HQL Criteria Restrictions.eq 两表关联和三表关联查询分析总结笔记
- hql查询方式 和 criteria 查询
- Criteria:是一种比hql更面向对象的查询方式
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
- 三、NHibernate查询之HQL&Criteria
- Hibernate中的三种查询HQL、Criteria、Sql学习(一)
- Hibernate笔记(4)-hql查询与Criteria查询
- Hibernate 的三种查询方式:HQL、Criteria、Sql
- Hibernate中的查询:HQL、Criteria、原生SQl
- Hibernate 、Hql查询和Criteria查询
- Hibernate中的三种查询HQL、Criteria、Sql学习(二)
- Hibernate Hql与Criteria查询的补充知识
- Hibernate中createCriteria即QBC查询的详细用法和HQL的区别?
- Hibernate 、Hql查询和Criteria查询
- Hibernate 、Hql查询和Criteria查询