hibernate查询语言(hql)与sql(结构化查询语言)相同,但不依赖于数据库表。 我们在hql中使用类名,而不是表名。 所以是数据库独立的查询语言。
hql有很多优点。 它们如下:
它是一个面向对象的hibernate query表示。 query的对象可以通过session接口调用createquery()
方法。
查询接口提供了很多方法。下面给出了一些最常用的方法:
public int executeupdate()
用于执行更新或删除查询。public list list()
将关系的结果作为列表返回。public query setfirstresult(int rowno)
指定从哪里检索记录的行号。public query setmaxresult(int rowno)
指定从关系(表)中检索记录的行号。public query setparameter(int position, object value)
它将该值设置为jdbc样式查询参数。public query 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");