HQL和Criteria

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. java jpa hibernate_java - JPA和Hibernate - Criteria与JPQL或HQL

    java - JPA和Hibernate - Criteria与JPQL或HQL 使用Criteria或HQL有哪些优缺点? Criteria API是一种很好的面向对象的方式来表达Hibernate ...

  2. Hibernate 学习笔记(二)—— Hibernate HQL查询和 QBC 查询

    目录 一.Hibernate 的 HQL 查询 1.1.查询所有数据 1.2.条件查询 1.3.排序查询 1.4.统计查询 1.5.分页查询 1.6.投影查询 二.Hibernate 的 QBC 查询 ...

  3. Hibernate之Criteria查询

    Hibernate中提供了三种查询方式,分别为HQL.Criteria查询.本地化SQL查询,实际应用中,有很多人忽略了Criteria的用处,觉得不如另外两种贴近SQL方式便捷,实际则未必,很多情况 ...

  4. JPA和Hibernate-条件与JPQL或HQL

    本文翻译自:JPA and Hibernate - Criteria vs. JPQL or HQL What are the pros and cons of using Criteria or H ...

  5. HQL语句的基本语法和使用

     HQL查询 Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性 ,因此 H ...

  6. Criteria的用法

    一.Hibernate提供了5种检索对象的方式 1.导航对象图检索方式:根据已经加载的对象导航到其他对象    from  Emp e group by e.dept.deptName 2.OID检索 ...

  7. Hibernate-day04

    HIbernate中的HQL查询 Hibernate中的查询方式: 1,使用HQL:使用hibernate提供的面向对象的查询语句; 2,使用SQL:在hibernate中允许使用原生的SQL直接查询 ...

  8. NHibernate学习系列一

    NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映 ...

  9. Hibernate Shards 数据的水平、垂直切割(二)- Hibernate Shards基本演示

    准备 1. 以Hibernate Shards 数据的水平.垂直切割(一)- Hibernate测试环境的项目为基础 2. Hibernate Shards使用了commons logging,下载个 ...

最新文章

  1. hive同时不包含一些字符串_Hive中常用的字符串操作
  2. P2473 [SCOI2008]奖励关
  3. 通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能
  4. RHCE实验室NTP时间服务器配置最终版
  5. 指向二维数组的指针测试
  6. 谷歌android go 销量,谷歌Android Go进入尴尬期:目前仅十多个App专门适配
  7. RPC框架实现思路浅析
  8. ChemDraw 15支持哪些输入格式
  9. Kubernetes集群部署1
  10. 计算机系统应用技术课程,基于protégé的课程内容本体的构建-计算机系统应用.pdf...
  11. idea解决tomcat控制台中文乱码问题
  12. 设置电脑开机自启动软件,exe/jar均可
  13. RouterOS利用(L2TP)实现异地组网
  14. acpi_hardware_id可以通过HID/CLD/UID/CLS/method/path获得
  15. 用c语言寸件照换底颜色,怎么给证件照换底色【使用步骤】
  16. 外贸常用术语_外贸常用术语大全
  17. HDLBits刷题全记录(五)
  18. 梅捷计算机主板价格,梅捷H81亲民主板逆袭!新到货仅售499元
  19. 绿联USB4扩展坞,VL830拆解分析
  20. zip gzip 7z 简单比较

热门文章

  1. matlab程序vpa用处,Matlab 提高精度 vpa
  2. uniApp——个性化组件
  3. 阿里巴巴python招聘_python阿里巴巴招聘网站爬虫
  4. CRM系统有哪些类型?
  5. Leetcode1091_二进制矩阵中的最短路径(Java+BFS解法)
  6. 你经历或者不曾经历过的网赚黄金时代
  7. 镜头矫正 棋盘矫正_矫正强迫,而不是症状
  8. Java常用技巧和常见错误扫雷
  9. MongoDB 查询游标超时
  10. 乐教乐学各关的解(61-70)