hibernate的查询方式常见的主要分为三种: HQL, QBC(Query By Criteria)查询, 以及使用原生SQL查询

HQL查询

• HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式。

• HQL在语法结构上和SQL语句十分的相同,所以可以很快的上手进行使用。使用HQL需要用到Hibernate中的Query对象,该对象专门执行HQL方式的操作。

查询所有示例
session.beginTransaction();
String hql = "from User"; // from 后跟的是要查询的对象,而不是表
Query query = session.createQuery(hql);
List<User> userList = query.list();
for(User user:userList){ System.out.println(user.getUserName());
}
session.getTransaction().commit();

获取一个不完整的对象
session.beginTransaction();
String hql = "select userName from User";
Query query = session.createQuery(hql);
List nameList = query.list();
for(Object obj:nameList){ System.out.println(obj);
}
session.getTransaction().commit();// 多个属性的话,需要用object[]接收

session.beginTransaction();
String hql = "select userName,userPwd from User";
Query query = session.createQuery(hql);
List nameList = query.list(); for(Object obj:nameList){ Object[] array = (Object[]) obj; // 转成object[]System.out.println("name:" + array[0]); System.out.println("pwd:" + array[1]);
}
session.getTransaction().commit();

统计和分组查询
session.beginTransaction();
String hql = "select count(*),max(id) from User";
Query query = session.createQuery(hql);
List nameList = query.list();
for(Object obj:nameList){ Object[] array = (Object[]) obj; System.out.println("count:" + array[0]); System.out.println("max:" + array[1]);
}
session.getTransaction().commit();

更多写法
select distinct name from Student; select max(age) from Student; select count(age),age from Student group by age; from Student order by age;

HQL占位符和分页session.beginTransaction();String sql ="select uname,password from User where enable=?";Query query =session.createQuery(sql);//占位符内容query.setBoolean(0, true);//第几个开始query.setFirstResult(0);//显示个数query.setMaxResults(2);List<Object[]> list = query.list();        for (Object[] user : list) {System.out.println(user[0]+"--"+user[1]);}session.getTransaction().commit();

原生SQL查询

addEntity()示例
session.beginTransaction(); String sql = "select id,username,userpwd from t_user"; // addEntity()可以告诉Hibernate你想要封装成对象的类型,然后自动为你封装
SQLQuery query = session.createSQLQuery(sql).addEntity(User.class); List<User> list = query.list(); for(User user : list){ System.out.println(user.getUserName());
} session.getTransaction().commit();

uniqueResult示例
session.beginTransaction(); String sql = "select id,username,userpwd from t_user where id = 2";
SQLQuery query = session.createSQLQuery(sql).addEntity(User.class); User user = (User) query.uniqueResult(); System.out.println(user.getUserName()); session.getTransaction().commit();

转载于:https://www.cnblogs.com/fudapeng/p/3848309.html

hibernate的查询方式相关推荐

  1. Hibernate框架--学习笔记(下):hibernate的查询方式、多表查询、检索策略、批量抓取

    一.hibernate的查询方式: 主要有五种:对象导航查询:OID查询:hql查询:QBC查询:本地sql查询. 1.对象导航查询:根据id查询某个客户,再查询这个客户里面所有的联系人. 2.OID ...

  2. hibernate(七) hibernate中查询方式详解

    序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...

  3. hibernate中查询方式(二):常用查询

    Collection(集合) 列出所有有学生参加的项目:(项目的学生的数量大于0,则表示有学生参加) public void testCollection() throws Exception {Se ...

  4. Hibernate各种查询方法

    1 hibernate的查询方式 2 对象导航查询 3 hql查询 (1)查询所有 (2)条件查询 (3)排序查询 (4)分页查询 (5)投影查询 (6)聚集函数使用 4 qbc查询 (1)查询所有 ...

  5. JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题

    Hibernate的检索方式  Hibernate提供了以下几种检索对象的方式: 导航对象图检索方式:根据已经加载的对象导航到其他对象. OID检索方式:按照对象的OID来检索对象. HQL检索方式: ...

  6. .Net转Java自学之路—Hibernate框架篇三(查询方式)

    Hibernate查询方式: 1.对象导航查询:根据id查询出一的数据,再根据一的查询结果查询多的数据. OnlyClass only=session.get(OnlyClass.class,1); ...

  7. Hibernate之HQL检索(查询)方式

    HQL(Hibernate Query Language)是面向对象的查询语言,与SQL非常相似.在Hibernate中,HQL是使用最广泛的检索方式. 具有下面经常使用功能: (1)在查询语句中,能 ...

  8. Hibernate查询方式

    Hibernate查询方式 1 OID查询 (1)根据id查询某一条记录,返回对象 2 对象导航查询 (1)根据id查询某个公司,再查询这个公司里面所有的员工   Company c=session. ...

  9. Hibernate框架 五种查询方式

    OID查询 Hibernate根据对象OID(主键)进行检索 ①get() ②load() 对象导航检索 Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式 HQL检索(不支持 ...

最新文章

  1. Tensorflow函数——tf.variable_scope()
  2. 计算机二叉树讲解ppt,数据结构二叉树.ppt
  3. MPLS ×××实验之OSPF sham-link
  4. Oracle--plsql异常处理
  5. UITextField属性
  6. c语言Wndproc未定义,为什么我的老是未定义
  7. 印度软件和中国软件工程师_印度社区如何支持隐私和软件自由
  8. java构造器基本语法_Java语言中的定义变量、构造函数
  9. python pip国内源_Python pip配置国内源 (转载)
  10. (六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
  11. 单相无感正弦驱动方案
  12. 用u盘进不了pe计算机意外地,u盘装系统启动不了无法进入pe怎么办
  13. c语言中eof的作用,C语言中EOF是什么意思?
  14. C#调用C++类库dll,无法找到函数入口(无法在“***.dll“中找到名为“***“的入口点)
  15. Android修改项目名和包名
  16. css代码文字破碎js特效
  17. 第13课:实战之用 Python 写一个抢票软件
  18. 阴阳师真八歧大蛇最低配置攻略,蛇黑切
  19. css3 烟 蚊香_如何使用纯CSS实现蚊香燃烧的效果(附源码)
  20. Qt超强绘图QCustomplot 动态图静态图时间坐标轴

热门文章

  1. ci mysql 缓存_CI框架缓存的实现原理
  2. Pikachu实验过程1(函数报错的信息)
  3. 2017百度之星资格赛:1001. 度度熊保护村庄(floyd最小环)
  4. Region proposal学习笔记
  5. Matlab 小波变换dwt和wavedec
  6. 利用k-means算法实现图像自动色彩量化
  7. [debug] 命令行窗口运行.py文件,报错No module named XXX
  8. 微服务架构系列文章、精品教程
  9. js系列教程9-表单元素全解
  10. 均方根误差RMSE(Root Mean Square Error)