hibernate的查询方式
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的查询方式相关推荐
- Hibernate框架--学习笔记(下):hibernate的查询方式、多表查询、检索策略、批量抓取
一.hibernate的查询方式: 主要有五种:对象导航查询:OID查询:hql查询:QBC查询:本地sql查询. 1.对象导航查询:根据id查询某个客户,再查询这个客户里面所有的联系人. 2.OID ...
- hibernate(七) hibernate中查询方式详解
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...
- hibernate中查询方式(二):常用查询
Collection(集合) 列出所有有学生参加的项目:(项目的学生的数量大于0,则表示有学生参加) public void testCollection() throws Exception {Se ...
- Hibernate各种查询方法
1 hibernate的查询方式 2 对象导航查询 3 hql查询 (1)查询所有 (2)条件查询 (3)排序查询 (4)分页查询 (5)投影查询 (6)聚集函数使用 4 qbc查询 (1)查询所有 ...
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
Hibernate的检索方式 Hibernate提供了以下几种检索对象的方式: 导航对象图检索方式:根据已经加载的对象导航到其他对象. OID检索方式:按照对象的OID来检索对象. HQL检索方式: ...
- .Net转Java自学之路—Hibernate框架篇三(查询方式)
Hibernate查询方式: 1.对象导航查询:根据id查询出一的数据,再根据一的查询结果查询多的数据. OnlyClass only=session.get(OnlyClass.class,1); ...
- Hibernate之HQL检索(查询)方式
HQL(Hibernate Query Language)是面向对象的查询语言,与SQL非常相似.在Hibernate中,HQL是使用最广泛的检索方式. 具有下面经常使用功能: (1)在查询语句中,能 ...
- Hibernate查询方式
Hibernate查询方式 1 OID查询 (1)根据id查询某一条记录,返回对象 2 对象导航查询 (1)根据id查询某个公司,再查询这个公司里面所有的员工 Company c=session. ...
- Hibernate框架 五种查询方式
OID查询 Hibernate根据对象OID(主键)进行检索 ①get() ②load() 对象导航检索 Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式 HQL检索(不支持 ...
最新文章
- Tensorflow函数——tf.variable_scope()
- 计算机二叉树讲解ppt,数据结构二叉树.ppt
- MPLS ×××实验之OSPF sham-link
- Oracle--plsql异常处理
- UITextField属性
- c语言Wndproc未定义,为什么我的老是未定义
- 印度软件和中国软件工程师_印度社区如何支持隐私和软件自由
- java构造器基本语法_Java语言中的定义变量、构造函数
- python pip国内源_Python pip配置国内源 (转载)
- (六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
- 单相无感正弦驱动方案
- 用u盘进不了pe计算机意外地,u盘装系统启动不了无法进入pe怎么办
- c语言中eof的作用,C语言中EOF是什么意思?
- C#调用C++类库dll,无法找到函数入口(无法在“***.dll“中找到名为“***“的入口点)
- Android修改项目名和包名
- css代码文字破碎js特效
- 第13课:实战之用 Python 写一个抢票软件
- 阴阳师真八歧大蛇最低配置攻略,蛇黑切
- css3 烟 蚊香_如何使用纯CSS实现蚊香燃烧的效果(附源码)
- Qt超强绘图QCustomplot 动态图静态图时间坐标轴