HQL

1、属性查询

1.1、单个属性查询


1.2、多个属性查询

每条记录对应的都是Ocject[]数组,每个Object数组中依次保存所获取的属性数据。

1.3、动态构造对象实例,前提要有相应的构造函数

1.4、存放在一个List对象中

1.5、Map

该查询返回了一个 Map 的对象,内容是别名与被选择的值组成的名-值映射

2、参数绑定

2.1、命名参数和?占位符


2.2、封装参数(对象属性必须与命名参数名一致)

实现:

3、聚合函数


4、order by、group by



5、分页

Hibernate提供:

 6、HQL查询性能优化 

6.1、避免使用or操作,使用in替代;避免使用not、like的特殊形式、having子句、distinct6.2、所以在以下情况下失效:

①对字段使用函数;

②对字段进行计算,如price+10;

③某些情况下的like操作;

④某些情况下使用not,如not(price>1800);

⑤在where中使用or时,有一个字段没有索引,那么其它字段的索引将不起作用;

7、连接查询

7.1、内连接:inner join


fetch关键字表明右表对象读取后立即填充到对应的左表对象中。如果忽略fetch关键字,得到的结果集中每行数据都是一个Object数组。通过 with可以提供获得额外的join条件

7.2、外连接

7.2.1、右外连接

7.2.2、左外连接

from Emp e left join fetch e.dept d

8、命名查询

首先在class同级节点上配置

通过Query q=session.getNamedQuery("test");方法获得该查询语句


9、本地SQL查询

9.1查询

9.2命名查询


XML配置

<return>是指定别名和实体类的联系,其中alias属性用于指定别名,class用于指定实体类

 

10、过滤集合

集合过滤器(filter)是一种用于一个持久化集合或者数组的特殊的查询。查询字符串中可以使用 "this" 来引用集合中的当前元素。



你可能感兴趣的:(HQL)