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:

 hibernate--11.hql查询

 

1.3  Query对象使用

(1)创建Query对象,写hql语句

(2)调用query对象里面的方法得到结果

 hibernate--11.hql查询

 

 

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?

hibernate--11.hql查询

2 代码

 hibernate--11.hql查询

2.2.2  模糊查询

hibernate--11.hql查询

 

2.2.3  拼接hql

hibernate--11.hql查询

 

 

2.3  排序查询

1 hql排序语句写法

(1)from 实体类名称 order by 实体类属性名称 asc/desc

 hibernate--11.hql查询

 

2.4  分页查询

1 mysql实现分页

(1)使用关键字 limit实现

hibernate--11.hql查询

 

2 在hql中实现分页

(1)在hql操作中,在语句里面不能写limit,hibernate的Query对象封装两个方法实现分页操作

 hibernate--11.hql查询

 

2.5  投影查询(部分查询)

1 投影查询

         查询不是所有字段值,而是部分字段的值

 

2 投影查询hql语句写法:

(1)select 实体类属性名称1, 实体类属性名称2  from 实体类名称

(2)select 后面不能写 * ,不支持的

 

3 具体实现

hibernate--11.hql查询

 

 

2.6  聚集函数使用

1 常用的聚集函数

         count、sum、avg、max、min

 

2 hql聚集函数语句写法

         查询表记录数:selectcount(*) from 实体类名称

 hibernate--11.hql查询

 

3      HQL多表查询

3.1  概述

hibernate--11.hql查询

3.1.1  Mysql里面多表查询

hibernate--11.hql查询

 

3.1.2  HQL实现多表查询

hibernate--11.hql查询

 

3.2  HQL内连接和迫切内连接

3.2.1  内连接查询

hql语句写法:以客户和联系人为例

         from  Customer c  inner  join  c.setLinkMan

hibernate--11.hql查询

返回list,list里面每部分是数组形式

 hibernate--11.hql查询

3.2.2  迫切内连接

(1)迫切内连接和内连接底层实现一样的

(2)区别:使用内连接返回list中每部分是数组,迫切内连接返回list每部分是对象

(3)hql语句写法

- from  Customer  c inner  join  fetch c.setLinkMan

 hibernate--11.hql查询

 

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每部分是对象

hibernate--11.hql查询hibernate--11.hql查询

 

1.3.2  右外连接hql语句:

(1)from  Customer  c right  outer  join  c.setLinkMan