HQL的定义:Hibernate Query Language是面向对象的查询语言,映射的持久层的类,Hibernate可以自行把HQL转化为SQL,从而进行操作。
注意:HQL映射的是持久层的类,而SQL映射的数据表。
初学HQL要注意的问题:
1.HQL是面向对象的查询语言,对Java类和属性的大小写敏感。
SQL是面向数据库的查询语言,对表名,列名不敏感。
2.HQL对关键字不区分大小写,如select ,from ,where ,group by,having ,order by 等
Query接口简介:
- Query接口定义有执行查询方法。
- Query接口支持方法链编程风格。
几个查询语句:
1.多表查询(两表连接)
得到商品信息的同时得到买家的名字。如果两表关联,没有强制输出外键信息,那么Hibernate将不会执行多表查询,如果想得到外键信息,Hibernate将自动执行,这就是所谓的软查询。
hql="from com.neusoft.vo.Commdity";和hql="from Commdity";实现的效果是一样的,这也就说明了HQL是面向对象的查询语言。
hql="from Commdity as c";说明可以给表加别名,这样可以在进行多表连接的时候,避免两表中的有些列名相同的情况。
2.当只查询出一个属性的时候,返回的是对象,结果用对象接收,不然将会报错。
3.list返回结果,map返回结果,这两种没有插入,看习惯。
4.以自定义的类型,用构造方法实现
提问:如果已经写了构造器,是否还需要原来的无参构造?
答案是肯定需要的,在指定自定义的构造器时,HIbernate会调用它的有参构造,若不指定,Hibernate将调用默认的无参构造,即当查询表中所有信息时,没有
指定构造器,所以他调用的默认的无参构造。
5.where子句:逻辑表达式,设置查询条件,限制返回结果。
如比较运算符,范围运算,模糊查询,集合运算,四则运算