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. 梯度下降理解和梯度下降计算检查斯坦福
  2. linux 手动释放buff/cache
  3. IsWindow,findwindow
  4. mysql cluster 查看最大索引数_MySQL 数据库优化,看这篇就够了
  5. springboot pom文件添加mysql组件_SpringBoot+Mybatis 通过databaseIdProvider支持多数据库
  6. 函数声明是形参类型省略
  7. 51单片机dds信号发生器 扫频 c语言,基于AT89C51单片机和DDS器件实现频率特征测试仪的设计...
  8. 猎豹移动回应被谷歌下架:积极整改情况下被单方面下架
  9. 大智慧找不到服务器,【图】大智慧官方居然没有全推服务器请老师解决_股票软件,股票指标,炒股,股票论坛,选股公式_股票软件技术交流论坛_理想论坛 - 股票论坛...
  10. matlab 工具函数 —— logdet(A)
  11. 【C++】内存4区---代码区、全局区、栈区、堆区
  12. Spring3开发实战 之 第四章:对JDBC和ORM的支持
  13. GD32F103入门实践(一)配置环境,搭建工程模板,烧写程序
  14. 未知usb设备设备描述符请求失败怎么解决
  15. Linux Shell学习-第二讲(进阶篇)
  16. python三维矩阵_python三维矩阵
  17. 【转】高通平台android 环境配置编译及开发经验总结
  18. mongodb java api chm_MongoDB中文手册chm版
  19. python excel 读写,定义名称
  20. jira -workflow之父级任务关注人copy到子任务

热门文章

  1. token详解及常见防范措施
  2. 树的点分治(HDU 5977 2016ICPC大连 G: Garden of Eden)
  3. [debug+Python] 复制字典不能直接用 ‘=’,要用dict_name.copy()
  4. [转] 面向对象编程介绍
  5. 使用Git将本地文件夹同步至github
  6. matlab关于向量的基本操作
  7. 模电里的二端口等效模型
  8. 快速写出matlab的GUI程序
  9. spark+phoenix
  10. nodejs初探(四)实现一个多人聊天室