HQL(Hibernate Query Language)

       面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作,Query的创建方式:

Queryq = session.createQuery(hql);

l      from Person

l      from User user whereuser.name=:name

l      from User user where user.name=:nameand user.birthday < :birthday

Criteria

Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式:

Criteriacrit = session.createCriteria(DomainClass.class);

简单属性条件如:criteria.add(Restrictions.eq(propertyName,value)),

criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))

利用name的不同的查询

1、 HQL

Session s=null;

try{

s=HibernateUtil.getSession();

//from Useruser  给User起一个别名为user.    name表示的是类中的属性名

//fromObject    查得是所有表格中的记录行,from User  查得是User所对应表中的所有记录行

String queryString="from User user where user.name=:n";//查询字符串,hibernate的查询语言hql。类名区分大小写

Query query=s.createQuery(queryString);//产生query对象,用来查询

//  query.setString(0, name);//下标从0开始

query.setString("n", name);//用命名参数,就不需要索引下标的位置了

//实现分页查询

query.setFirstResult(0);//从第0行开始

query.setMaxResults(2);//每页最多显示2条记录

/*query.list();//列出所有满足条件的结果集

query.uniqueResult();//返回的是一行的结果集*/

//如果满足条件的不止一条记录

List<User> list=query.list();

for(User u:list){

System.out.println(u.getId()+":"+u.getName());

}

//如果明确知道就一行

/*Useruser=(User) query.uniqueResult();

System.out.println(user.getId()+":"+user.getName());*/

}finally{

if(s!=null){

s.close();

}

}

2、 Criteria

Session s=null;

try{

s=HibernateUtil.getSession();

Criteria c=s.createCriteria(User.class);//根据映射类型去查表

c.add(Restrictions.eq("name", name));//添加的是约束条件,user里面的name属性要等于参数name

//  c.add(Restrictions.le("birthday", value));//生日要小于等于。。。。。。

//上面的两句话等价于Criteria c=s.createCriteria(User.class).c.add(Restrictions.eq("name",name));

List<User> list=c.list();

for(User user:list){

System.out.println(user.getId()+":"+user.getName()+":"+user.getBirthday());

}

}finally{

if(s!=null){

s.close();

}

}

sql查得是表,HQl查得是对象,hql支持多态

HQL和Criteria(转)的更多相关文章

  1. 【JAVAEE学习笔记】hibernate04:查询种类、HQL、Criteria、查询优化和练习为客户列表增加查询条件

    一.查询种类 1.oid查询-get 2.对象属性导航查询 3.HQL 4.Criteria 5.原生SQL 二.查询-HQL语法 //学习HQL语法 public class Demo { //基本 ...

  2. JAVAEE学习——hibernate04:查询种类、HQL、Criteria、查询优化和练习为客户列表增加查询条件

    一.查询种类 1.oid查询-get 2.对象属性导航查询 3.HQL 4.Criteria 5.原生SQL 二.查询-HQL语法 //学习HQL语法 public class Demo { //基本 ...

  3. hibernate HQL和Criteria

    package com.test; import java.util.Date; import java.util.List; import org.hibernate.Query; import o ...

  4. HQL和Criteria

    HQL: public boolean doCreate(Dept vo) throws Exception { return this.sessionFactory.getCurrentSessio ...

  5. 比较HQL、Criteria、Native-SQL这三者做查询的区别,以及应该如何进行选择?

    HQL功能很强大,适合各种情况,但是动态条件查询构造起来很不方便: Criteria 最适合动态查询,但不太适合统计查询,QBE还不够强大.只适合简单的查询: Native-SQL可以实现特定的数据库 ...

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

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

  7. grails的criteria和hql查询

    grails在查询方面也保留了hibernate的hql和criteria查询功能.hql自然不必多说基本不会有什么变化,grails的criteria查询在hibernate上面做了微调使用起来更加 ...

  8. Hibernate框架Criteria查询

    本文章适合一些初学者 一.使用Criteria查询数据        1.条件查询            1.1:使用Criteria查询的步骤                    1.使用Sess ...

  9. 2018.11.13 Hibernate 中数据库查询中的Criteria查询实例

    Criteria是面向对象的无语句查询 Demo.java package com.legend.b_criteria; import java.util.List; import org.hiber ...

随机推荐

  1. 对163k地方门户网站系统QQ互联功能修改

    163k地方门户网站QQ互联申请时遇到的问题: "禁止开发商强制用户重新注册或绑定其他帐号" 原因是用户登录完QQ还需要注册帐号或者绑定原有帐号 163k地方门户网站的QQ互联登录 ...

  2. The JRE could not be found.Edit the server and change the JRE location.

    之前更改了了一个较低的jdk的版本看了看一个项目的代码,不知所云,然后再改回来, 混乱之中只要启动Tomcat就出现这种错误,还是无法找到JRE,最后如此解决: 在Windows->Prefer ...

  3. LeetCode_Populating Next Right Pointers in Each Node II

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  4. 《Programming WPF》翻译 第6章 1.创建和使用资源

    原文:<Programming WPF>翻译 第6章 1.创建和使用资源 资源这个词具有非常广泛的意义.任何对象都可以是一个资源.一个在用户界面中经常使用的Brush或者Color可以是一 ...

  5. windows nfs server for linux

    摘要 在开发嵌入式系统的过程中,为了方便调试与文件共享,需要使用到nfs,即网络文件系统,这位板子的调试测试带来了很大的方便.之前在linux系统下开发,与ARM11核心板 linux系统对接共享也比 ...

  6. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

    美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...

  7. JS代码的window.location属性详解

    转载:http://www.5icool.org/a/201105/a564.html 如果你稍微懂一些JS代码,一般都会知道 window.location.href 这个属性.并且用该属性获取页面 ...

  8. 【CF 549G Happy Line】排序

    题目链接:http://codeforces.com/problemset/problem/549/G 题意:给定一个n个元素的整数序列a[], 任意时刻对于任一对相邻元素a[i-1]. a[i],若 ...

  9. (转)Eclipse 远程调试 WebSphere Application Server (WAS)

    目前我们项目中使用的应用服务器多是WebSphere,一直苦于无法进行调试,今天在网上看到一篇,原文是 http://www.cnblogs.com/newstar/archive/2010/04/1 ...

  10. 我为什么放弃Go语言

    有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?事实上我一直在认真思考这个问题. 开门见山地说,我当初放弃Go语言(golang),就是由于两个 ...