📅  最后修改于: 2021-01-02 15:50:37             🧑  作者: Mango
休眠查询语言(HQL)与SQL(结构化查询语言)相同,但它不依赖于数据库表。我们在HQL中使用类名代替表名。因此它是数据库独立的查询语言。
HQL有许多优点。它们如下:
它是Hibernate Query的面向对象表示。可以通过调用createQuery()方法Session接口来获取Query对象。
查询接口提供了许多方法。给出了常用的方法:
Query query=session.createQuery("from Emp");//here persistent class name is Emp
List list=query.list();
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
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();
Query query=session.createQuery("delete from Emp where id=100");
//specifying class name (Emp) not tablename
query.executeUpdate();
您可以通过HQL调用avg(),min(),max()等聚合函数。让我们看一些常见的例子:
Query q=session.createQuery("select sum(salary) from Emp");
List 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");
Query q=session.createQuery("select count(id) from Emp");
Query q=session.createQuery("select avg(salary) from Emp");