shuiluobu 2020-03-20
HQL(Hibernate Query Language) 是Hibernate框架提供的一种查询机制,它和 SQL 查询语言很相似。不同的是HQL是面向对象的查询语言,让开发者能够以面向对象的思想来编写查询语句,对Java编程来说是很好的一种方式。
但是HQL语言是不能直接与数据库进行交互的,它是中间层的语言,Hibernate框架会将其翻译成底层数据库能够识别的SQL语言,与数据库进行交互。
需要注意的是,HQL语言不能直接进行insert操作,select,delete,update是支持的。
1.实体对象查询
查询表中的所有数据,自动完成对象封装,返回List集合。
HQL进行查询操作,若省略select关键字,则查询所有字段,from关键字后面不能写表名,必须写数据表对应的实体类名。
2.分页查询
HQL分页查询可以通过调用query的方法来完成。
1.setFirstResult():设置截取的起始下标。
2.setMaxResults():设置截取记录的长度。
3.where条件查询
HQL直接追加where关键字设置查询条件,与SQL没有区别。
4.模糊查询
5.order by
6.group by
7.group by having
8.查询实体对象的属性
9.占位符
HQL的占位符通过下标进行替换。
需要注意的是HQL中占位符的下标从0开始,JDBC的占位符下标从1开始。
使用query的set*方法来替换变量,根据变量的类型来决定调用哪个方法。
如int类型则调用setInteger(),String类型调用setString()。
10.参数
跟占位符类似,用变量替换HQL语句中的值,需要注意的是在HQL语句中参数名前要加:。
11.级联查询
HQL是面向对象的查询语言,所以不需要通过数据表的外键关联,可直接通过实体类的级联关系进行设置。
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。