个性化阅读
专注于IT技术分析

Hibernate查询语言(HQL)

Hibernate查询语言(HQL)与SQL(结构化查询语言)相同, 但它不依赖于数据库表。我们在HQL中使用类名代替表名。因此它是数据库独立的查询语言。

HQL的优势

HQL有许多优点。它们如下:

  • 与数据库无关
  • 支持多态查询
  • Java程序员易学

查询界面

它是Hibernate Query的面向对象表示。可以通过调用createQuery()方法Session接口来获取Query对象。

查询接口提供了许多方法。给出了常用的方法:

  1. public int executeUpdate()用于执行更新或删除查询。
  2. public List list()以列表的形式返回Ralation的结果。
  3. 公共查询setFirstResult(int rowno)指定将从中检索记录的行号。
  4. 公共查询setMaxResult(int rowno)指定否。从关系(表)中检索的记录数。
  5. public Query setParameter(int position, Object value)它将值设置为JDBC样式查询参数。
  6. 公共查询setParameter(String name, Object value)它将值设置为命名查询参数。

获取所有记录的HQL示例

Query query=session.createQuery("from Emp");//here persistent class name is Emp
List list=query.list();

通过分页获取记录的HQL示例

Query query=session.createQuery("from Emp");
query.setFirstResult(5);
query.setMaxResult(10);
List list=query.list();//will return the records from 5 to 10th number

HQL更新查询示例

Transaction tx=session.beginTransaction();
	Query q=session.createQuery("update User set name=:n where id=:i");
	q.setParameter("n", "Udit Kumar");
	q.setParameter("i", 111);
	
	int status=q.executeUpdate();
	System.out.println(status);
	tx.commit();

HQL删除查询的示例

Query query=session.createQuery("delete from Emp where id=100");
//specifying class name (Emp) not tablename
query.executeUpdate();

具有汇总功能的HQL

你可以通过HQL调用avg(), min(), max()等聚合函数。让我们看一些常见的例子:

获取所有员工总工资的示例

Query q=session.createQuery("select sum(salary) from Emp");
List<Integer> list=q.list();
System.out.println(list.get(0));

获得员工最高薪水的示例

Query q=session.createQuery("select max(salary) from Emp");

获得员工最低工资的示例

Query q=session.createQuery("select min(salary) from Emp");

计算员工ID总数的示例

Query q=session.createQuery("select count(id) from Emp");

获取每个员工平均工资的示例

Query q=session.createQuery("select avg(salary) from Emp");
赞(0)
未经允许不得转载:srcmini » Hibernate查询语言(HQL)

评论 抢沙发

评论前必须登录!