Hibernate检索方式

检索方式简介

HQL检索方式:

使用面向对象的HQL查询语言。
  • QBC检索方式:
使用QBC(Query By Criteria)API来检索对象。这种API封装了基于字符串形式的查询语句,提供了更加面向对象的接口。
  • 本地SQL检索方式:
使用本地数据库的SQL查询语句。

HQL(Hibernate Query Language)简介

  • HQL是一种面向对象的查询语言,和SQL查询语言有些类似。
  • 在Hibernate提供的各种检索方式中,HQL是使用最广的一种检索方式。
  • Query接口是HQL查询接口,提供各种查询功能。

HQL实体检索

1.全名查询

  • HQL语句中关键字大小写无关,但习惯将关键字小写。
  • from 关键字后面是类名不是数据库表名,类名需区分大小写。
    在这里插入图片描述
    等价于:
    在这里插入图片描述
    1.HQL使用别名查询
  • HQL检索一个类的实例时,如果查询语句的其它地方需要引用它,可以给类指定一个别名。
    as 关键字用来指定别名,as 关键字也可以省略。
    在这里插入图片描述
    3.where 子句(条件查询)
  • where 子句中给出的是类的属性名而不是数据库表字段名,其中属性名必须区分大小写。
String sql="from User where userName=?";
Query query=session.createQuery(hql);
query.setParameter(0,"张三");//注意下标是从0开始的
List userList=query.list();

4.在HQL查询语句中按参数名称绑定参数(具名查询)
在这里插入图片描述
HQL检索单个对象

  • HQL查询对象返回结果方法:
    list():返回List类型的查询结果,返回所有满足条件额对象。
    uniqueResult():返回单个对象

在这里插入图片描述

Query query=session.createQuery("from User u where u.userName='张三'");
User user =(User) query,uniqueResult();

HQL分组与排序

  • 1.order by 子句
    在这里插入图片描述
  • 2.group by 子句
    在这里插入图片描述
  • 3.having 子句
    在这里插入图片描述
  • 4.左连接查询–inner join
Query query= session.createQuery("select  d.name,e.name,e.id from Department d inner join d.employees  e");
			/*
			 * Department是实体类的名称
			d是它的别名
			inner join是内连接的关键字
			d.employees 是Department实体类的 一个属性
			*/
			List<Object[]> list=query.list();
			for (Object[] objects : list) {
				for (Object object : objects) {
					System.out.print(object+"\t");
				}
				System.out.println();
			}
  • 5.左连接查询–left join
Query query= session.createQuery("select e.id,d.name,e.name from Department d left join d.employees  e");
			List<Object[]> list=query.list();
			for (Object[] objects : list) {
				for (Object object : objects) {
					System.out.print(object+"\t");
				}
				System.out.println();
			}

HQL分页查询

  • 做批量查询时,如果数据量很大就需要分页功能,HQL提供了用于分页查询的方法:
    setFirstResult(int firstResult)//调用的是query对象
  • 设定从哪个对象开始检索。

setMaxResult(int maxResult)

  • 设定一次检索对象的数目。//就是一页显示多少条数据

QBC(Query By Criteria)简介

  • QBC可以看作是传统SQL的对象化表示,更加面向对象。

  • 主要由Criteria接口、Criterion接口、Restrictions 类组成。

  • Criterion 是 Criteria 的查询条件。

  • Criterion 的实例可以通过 Restrictions 工具类来创建

  • QBC表达式
    检索姓名为 张% 的所有员工。
    在这里插入图片描述
    步骤:

调用 Session 的 createCriteria() 创建 Criteria 实例;
通过 Restrictions 设定查询条件;
调用 Criteria 实例的 list() 方法执行查询。

本地SQL查询

  • HQL 和 QBC 查询,Hibernate 会生成标准的 SQL 语句适合不同的数据库平台。
  • 有时需要根据底层数据库生成特殊的 SQL 查询语句, Hibernate 对本地 SQL 查询提供了内置支持。

步骤:

调用session.createSQLQuery()创建SQLQuery实例,并指定查询的实体类型;
调用SQLQuery实例的list() 方法执行查询(如果查询单个对象,调用uniqueResult() )。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值