概述
HQL和SQl非常相似,不同点在于,SQl操作的是数据库的表和字段,而HQl操作的是实体类和属性。
在hibernate中,使用SqlQuery查找出的数据不能被自动封装成对象,而是以Object数组的形式返回。
所以,常在使用hibernate查询时使用到hql语句。
常用HQl
功能 | 语句 | 示例 |
---|---|---|
查询所有 | from+实体类名 | from Customer |
条件查询 | from+类名(可加别名)+where+条件(用属性名) | from Customer c where c.id = ?(问号位置从0开始) |
排序查询 | from+类名+order by+属性+DESC/ASC | from Customer order by id DESC |
投影查询 | select+属性+from+实体类名 | select c.id,c.name from Customer c |
聚集函数的使用:
- count:统计总数
- sum:求和
- avg:求平均
- max,min
以count为例:
select count(*) from +类名
多表查询
- 内连接:from +类名 别名+inner join 别名.set集合(以数组形式返回)
- 迫切内连接:与内连接底层实现相同,但是以对象形式返回
from +类名 别名 +inner join fetch +别名.set集合 - 左外连接:from 类名 别名+left outer join +别名.set
- 迫切左外连接:from 类名 别名+left outer join fetch +别名.set