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. 为什么说 Git 比 SVN 更好

    为什么说 Git 比 SVN 更好 在版本控制系统的选型上,是选择Git还是SVN? 对于开源项目来说这不算问题.使用Git极大地提高了开发效率.扩大了开源项目的参与度. 增强了版本控制系统的安全性, ...

  2. SHELL种类,版本及选择

    SHELL种类,版本及选择 凡是使用 *INX 的人,不论是作为 login shell 还是编程,多少都要接触到 Shell.经过多年的发展, Shell 的种类繁多.除了我们熟悉的 sh.ksh. ...

  3. SEO的URL如何优化才是最佳

    原文地址:http://www.chinaz.com/web/2007/0413/6841.shtml 很多人都知道URL对SEO的重要之处,但是很多站点却忽略了站点的路径优化.今天本人在这里写几点关 ...

  4. 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅵ

    · 学后心得体会与部分习题实现 心得体会: 曾经只是了解了优先队列的基本性质,并会调用C++ STL库中的priority_queue以及 java.util.PriorityQueue<E&g ...

  5. spftlayer 安装及简单使用

    1,yum -y install python-pip; pip(Python packet index);

  6. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  7. 安卓Menu键的问题

    近期开发中有须要Menu键,结果发现了一个非常尴尬的问题.我的測试机上有Menu键.可是測试平板上没有,队友的測试机上竟然也没有Menu键.这着实有些尴尬... 上网谷歌之后才发现问题所在: 仅仅有在 ...

  8. HDU 1813 Escape from Tetris (IDA*)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1813 题意:给你一个n*n的迷宫,其中0代表有一个人在这个位置,1代表墙,现在要求一个路线,使所有的人通 ...

  9. Oracle—RMAN备份(二)

    在Oracle  RMAN备份(一)中,对各种文件在RMAN中备份进行了说明, 一.备份集的复制 在RMAN 备份中,可以备份其自己的备份,即备份一个文件放在多个目录下,oralce支持最多备份四个. ...

  10. kaggle之人脸特征识别

    Facial_Keypoints_Detection github code facial-keypoints-detection, 这是一个人脸识别任务,任务是识别人脸图片中的眼睛.鼻子.嘴的位置. ...