首页 > 代码库 > Hibernate-HQL查询
Hibernate-HQL查询
Hibernate-HQL查询
HQL是hibernate query language的缩写,这是一门面向对象的查询语言,也是hibernate中最常见的查询语言。
(一) HQL的基本语法
|
注意事项
- 大小写敏感
- 尽量避免使用DML语句操作数据
例子
Select *from User u wher u.id>10 orderby u.id desc ;//心中一定要有对象的概念
(二) 实体对象与动态实例化对象查询
1) 实体对象查询
String executeSql = “from User”;
注意:不需要添加select关键字
2) 动态实例化对象查询
需求:如果我们在实际的情况中,不需要查询出对象的所有字段属性,我们可以采取什么样的方法呢?
Select id , name from user ;
分析:
上述的hql语句只查询了user对象的id,name这两个字段,
但在hibernate中,次语句返回的是Object的数组,他失去了原有的对象状态,
解决方案
Select new User(id,name) from User;
条件查询和别人的使用
在HQL中通过where子句实现条件查询
From User where id = 1;
HQL提供了对象别名的方法
From User u whre u.id = 1;
From User as u wher u.id = 1;//这两种方法都可以,我个人觉得使用第一种的。
(三) HQL语句的动态查询
1, JDBC编程中,PreparedStatement对象为开发提供了方便,不但可以为SQL语句进行动态赋值而且避免了SQL注入式攻击。并且还使用了SQL缓存技术,提高了SQL的执行效率。
2, HQL也采用了相似的方法。
1) “?”代表参数
此种方式跟PrepareStatement极为相似,通过query对象的方法setParameter()进行赋值
案例:
|
自定义参数名
此种方式也是通过Query对象的setParameter方法进行赋值,但是可以自定义HQL语句中的动态参数,他通过”:”号与定义参数组合的方法来实现的
|
(四) 对象导航查询
关系模型是通过主外键来建立两张表之间的关系,而面向对象的模型则是引用
Such as
Public class Student {
PrivateTeacher teacher = null ;
}
HQL查询符合Java程序员的变成习惯,当一个对象与另外一个对象存在依赖关系时,可以通过”.”符号进行导航。
|
(五) 排序查询
|
(六)
(七) 聚合函数
Select count() from User u ;
|
Select max(u.id) from User u ;
(八) 分组操作
在HQL中使用group by’子句进行分组操作
|
(九) 子查询
|
Hibernate-HQL查询