hql查询汇总

贴出三个bean的属性代码:还有网友的一篇文章关于sql注意事项,很实用在此贴出连接以便后期查看:HQL

还有一篇之前总结的关于jeecg框架中HQL的使用。

Special类:

Classroom类

Student类:

 

1.最简单的查询

List specials = (List)session.createQuery(“selct spe from Special spe”).list();
这是hql最基本的查询语句了,作用就是查出所有的Special对象放到一个List当中

2.基于 ? 的参数化形式

在hql中同样支持基于 ? 的参数化形式查询,注意:在jdbc中,setParameter的下标是从1开始的,而hibernate的setParameter的下标是从0开始的。

3.基于 :xx 的别名的方式设置参数

4.如果返回的值只有一个,可以使用uniqueResult方法

5.基于投影的查询

6.基于导航对象的查询

注意:若直接通过导航对象来查询时,其实际是使用cross join(笛卡儿积)来进行连接查询,这样做性能很差,不建议使用

7.使用 in 进行列表查询

在使用 in 进行列表查询时,这个时候要通过 setParameterList() 方法来设置我们的参数,注意:如果一个参数通过别名来传入,一个是通过 ? 的方式来传入的话,那么通过别名的hql语句以及参数设置语句要放在 ? 的后面,不然hibernate会报错。如果都是使用 别名 来设置参数,则无先后顺序

8.分页查询

9.内连接查询

10.左外连和右外连查询

11.创建DTO类,将查询出来的多个字段可以存放到DTO对象中去

12.group having字句