什么是HQL?
HQL(Hibernate Query Language)是Hibernate查询语言、是一种面向对象的查询语言,可以理解继承、多态和关联之类的概念。
from子句
1.from cn.hibernate.Dept
cn.hibernate.Dept是全限定类名(包名加类名)。
2.from Dept
省略了Dept的包名
3.from Dept as dept
为出就化类Dept指派别名dept,可以在HQL语句中使用这个别名。
select子句
select子句用于选取对象和属性
1.select dept from Dept as dept
select后面跟的是别名dept
2.select dept.name from Dept as dept
select子句选取了一个属性name,也可以选取多个数据。这里是属性名,而不是getName()这个方法。
where子句
where子句用于表达式查询限制条件
1.from DistrictEntity wherename = 'SALSE'
这条HQL语句用于查询名称部门SALSE的部门。在where子句中直接使用属性名。
2.from DistrictEntity as de where de.name = 'SALES'
这条HQL语句用于查询名称部门SALSE的部门。在where条件中可以使用别名点属性名的方式来查询。
3.from DistrictEntity as de where de.name is not null
HQL语句用于查询地址不为空的部门。
order by 子句
1.from DistrictEntity order by id asc
这条HQL语句会查询所有数据,查询完成后会按照升序进行排序。
2.from DistrictEntity order by id asc, name desc
会查询所有员工,先按照id进行排序,在按照姓名排序。
执行HQL语句
String sql = "from DistrictEntity";//声明sql语句
Query query = session.createQuery(sql);//创建Query对象
然后在通过Query对象的list()与iterator()查询。
查询语句参数
1.按照参数位置绑定,使用‘?’占位符
语法:from DistrictEntity de where de.id = ?
Query提供了绑定各种类型的参数和方法,如果参数为字符串,可调用setString()。该方法返回一个Query对象,也就是说可以在该方法后面继续的使用其他的方法。有两个参数,第一个参数可以是int型,为第几个参数从零开始;第二个参数为String类型,为要设置的值。
2.按照参数名称绑定,使用‘:’开头
语法:from DistrictEntity de where de.id = :id
与占位符相似,已setString()方法为例,第一个参数是String类型,里面写的是参数名称id;第二个参数设置值。
额外说一下另外两个方法:
1.setParameter():绑定任意类型的参数,程序会根据你传入的参数自动识别。
2.setProperties():绑定命名参数与一个对象的值属性,例如我的命名参数为name,这里就指向你绑定对象中一个name属性。这里要注意,命名参数与对象属性要保持一致。
总结:
1.HQL语言是面向对象的语言。
2.HQL中没有表和字段的概念,只有类、属性。
网友评论