hibernate--11.hql查询
1 Query对象
1.1 写hql语句
使用query对象,不需要写sql语句,但是写hql语句
(1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似
(2)hql和sql语句区别:
使用sql操作表和表字段
使用hql操作实体类和属性
1.2 常用的hql语句
(1)查询所有: from实体类名称
(2)条件查询: from实体类名称 where属性名称=?
模糊查询 like
(3)排序查询: from实体类名称 order by实体类属性名称 asc/desc
(4)分页查询:没有limit
(5)投影查询:select 实体类属性名称1, 实体类属性名称2 from 实体类名称
(6)聚集函数:select count(*) from 实体类名称
Sql:
1.3 Query对象使用
(1)创建Query对象,写hql语句
(2)调用query对象里面的方法得到结果
2 HQL查询
2.1 查询所有
1 查询所有客户记录
(1)创建Query对象,写hql语句
(2)调用query对象里面的方法得到结果
2 查询所有: from 实体类名称
2.2 条件查询
2.2.1 一般
1 hql条件查询语句写法:
(1) from 实体类名称 where 实体类属性名称=? and实体类属性名称=?
from 实体类名称 where 实体类属性名称 like?
2 代码
2.2.2 模糊查询
2.2.3 拼接hql
2.3 排序查询
1 hql排序语句写法
(1)from 实体类名称 order by 实体类属性名称 asc/desc
2.4 分页查询
1 mysql实现分页
(1)使用关键字 limit实现
2 在hql中实现分页
(1)在hql操作中,在语句里面不能写limit,hibernate的Query对象封装两个方法实现分页操作
2.5 投影查询(部分查询)
1 投影查询
查询不是所有字段值,而是部分字段的值
2 投影查询hql语句写法:
(1)select 实体类属性名称1, 实体类属性名称2 from 实体类名称
(2)select 后面不能写 * ,不支持的
3 具体实现
2.6 聚集函数使用
1 常用的聚集函数
count、sum、avg、max、min
2 hql聚集函数语句写法
查询表记录数:selectcount(*) from 实体类名称
3 HQL多表查询
3.1 概述
3.1.1 Mysql里面多表查询
3.1.2 HQL实现多表查询
3.2 HQL内连接和迫切内连接
3.2.1 内连接查询
hql语句写法:以客户和联系人为例
from Customer c inner join c.setLinkMan
返回list,list里面每部分是数组形式
3.2.2 迫切内连接
(1)迫切内连接和内连接底层实现一样的
(2)区别:使用内连接返回list中每部分是数组,迫切内连接返回list每部分是对象
(3)hql语句写法
- from Customer c inner join fetch c.setLinkMan
1.3 HQL外连接
1.3.1 左外连接和迫切左外连接hql语句:
(1)from Customer c left outer join c.setLinkMan
(2)迫切左外连接from Customer c left outer join fetch c.setLinkMan
左外连接返回list中每部分是数组,迫切左外连接返回list每部分是对象
1.3.2 右外连接hql语句:
(1)from Customer c right outer join c.setLinkMan