在Java的Hibernate框架中对数据库数据进行查询操作讲述.docx
文本预览下载声明
在Java的Hibernate框架中对数据库数据进行查询操作这篇文章主要介绍了Java的Hibernate框架中对数据库数据进行查询操作的方法,Hibernate是Java的SSH三大web开发框架之一Hibernate查询语言(HQL)是一种面向对象的查询语言,类似于SQL,但不是对表和列操作,HQL适用于持久对象和它们的属性。 HQL查询由Hibernate转换成传统的SQL查询,这在圈上的数据库执行操作。虽然可以直接使用SQL语句和Hibernate使用原生SQL,但建议使用HQL尽可能避免数据库可移植性的麻烦,并采取Hibernate的SQL生成和缓存策略的优势。都像SELECT,FROM和WHERE等关键字不区分大小写,但如表名和列名的属性是区分在HQL敏感。FROM 语句使用FROM子句,如果要加载一个完整的持久化对象到内存中。下面是一个使用FROM子句的简单的语法:?123String hql = FROM Employee;Query query = session.createQuery(hql);List results = query.list();如果需要完全限定在HQL一个类名,只需指定如下的包和类名:?123String hql = FROM com.hibernatebook.criteria.Employee;Query query = session.createQuery(hql);List results = query.list();AS 语句AS子句可以用来别名分配给类中的HQL查询,特别是当有很长的查询。例如,我们前面简单的例子是以下几点:?123String hql = FROM Employee AS E;Query query = session.createQuery(hql);List results = query.list();AS关键字是可选的,也可以直接在之后的类名指定别名,如下所示:?123String hql = FROM Employee E;Query query = session.createQuery(hql);List results = query.list();SELECT 子句SELECT子句提供了更多的控制权比from子句的结果集。如果想获得对象而不是整个对象的几个属性,使用SELECT子句。下面是一个使用SELECT语句来获取Employee对象只是FIRST_NAME字段的简单的语法:?123String hql = SELECT E.firstName FROM Employee E;Query query = session.createQuery(hql);List results = query.list();值得注意的是在这里,Employee.firstName是Employee对象的一个属性,而不是EMPLOYEE表的一个字段。WHERE 子句如果想缩小了从存储返回的特定对象,可以使用WHERE子句。下面是一个使用WHERE子句的简单的语法:?123String hql = FROM Employee E WHERE E.id = 10;Query query = session.createQuery(hql);List results = query.list();ORDER BY 子句若要排序HQL查询的结果,将需要使用ORDER BY子句。您可以在结果集按升序(ASC)或降序(DESC)通过在对象的任何属性排序结果。下面是一个使用ORDER BY子句的简单的语法:?123String hql = FROM Employee E WHERE E.id 10 ORDER BY E.salary DESC;Query query = session.createQuery(hql);List results = query.list();如果想通过一个以上的属性进行排序,你会仅仅是额外的属性添加到由子句用逗号隔开,如下所示的命令的结尾:?1234String hql = FROM Employee E WHERE E.id 10 +???????ORDER BY E.firstName DESC, E.salary DESC ;Query query = session.createQuery(hql);List results = query.list();GROUP BY 子句该子句允许从Hibernate的它基于属性的值的数据库和组提取信息,并且通常使用结果包括总值。下面是一个使用GROUP BY子句的语法很简单:?1234String hql = SELECT SUM(E.salary), E.firtName
显示全部