首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

HQL话语查询学习笔记

2012-11-11 
HQL语句查询学习笔记???? Hibernate的几种主要检索方式:HQL检索方式、QBC检索方式、SQL检索方式。HQL是Hibern

HQL语句查询学习笔记

???? Hibernate的几种主要检索方式:HQL检索方式、QBC检索方式、SQL检索方式。HQL是Hibernate Query Language的缩写,是官方推荐的查询语言。QBC是Query By Criteria的缩写,是Hibernate提供的一个查询接口。Hibernate是一个轻量级的框架,它允许使用原始SQL语句查询数据库。

??? HQL是Hiberante官方推荐的Hibernate检索方式,它使用类似SQL的查询语言,以面向对象的方式从数据库中查询。可以使用HQL查询具有继承、多态和关联关系的数据。在检索数据时应优先考虑使用HQL方式。

?检索类的所有对象

???? session.createQuery()以HQL查询语句为参数,生成一个查询对象。本例中的HQL语句为“from Student”,这是from子句,格式如下。

???? HQL关键字不区分大小写,FROM、from和From是一样的。

???? 属性查询使用select关键字,属性查询的格式如下。

???? 属性前可以加上类名加以限定,如:

???? 查询结果将只显示查询的属性列。

???? 属性查询的结果,对于用it.next()获得的每条记录,可以存储在Object[]数组中,以便进行存取。

?指定别名

在查询时,可以用关键字as指定查询的别名,指定别名可以简化查询,有时必需指定别名才能进行查询。以下代码查询学号中含有4的学生的姓名和所在系。

select s.sname,s.sdept from Student as s where s.sno like '%4%'from Student s

s就是类Student的别名。注意as可以省略,即下面的查询语句和上面的语句是等效的。

select s.sname,s.sdept from Student s where s.sno like '%4%'from Student s

?where条件子句

where条件子句跟SQL中的where条件子句类似,它检索符合条件的对象。例如,查询所有所在系别为计算机系的学生:

select s.sname,s.sdept from Student s where s.dept=’计算机’

???? where子句指定查询的条件,其语法和SQL类似。

???? 在where子句中可以指定比较运算符:>、>=、<、<=、<>,其含义分别为大于、大于等于、小于、小于等于、不等于。

查询年龄在22到23岁的学生:

from Student s where s.sage>=22 and s.sage<=23

??? 在where子句中指定查询的属性是否为null:is null、is not null,其含义分别表示为空和不为空。

查询所在籍贯为空的学生:

from Student s where s.saddress is null

使用distinct过滤掉重复值

使用distinct关键字将去掉结果中的重复值,只检索符合条件的对象。如下面的例子检索学生实例中的不重复的年龄。

??????? Session session=HibernateSessionFactory.currentSession();??????????? //创建Session

??????? String hql="select distinct s.sage from Student s";??????? ?????????? //HQL查询语句

??????? Query query=session.createQuery(hql);????????????????????? ????????????? //创建查询

??????? List list=query.list();?????????????????????????????????????? ???????????? //执行查询

热点排行