Hibernate 专题
专题目录
您的位置:java > Hibernate 专题 > Hibernate查询语言(HQL)
Hibernate查询语言(HQL)
作者:--    发布时间:2019-11-20

hibernate查询语言(hql)与sql(结构化查询语言)相同,但不依赖于数据库表。 我们在hql中使用类名,而不是表名。 所以是数据库独立的查询语言。

hql的优点

hql有很多优点。 它们如下:

  • 数据库独立
  • 支持多态查询
  • 易于java程序员学习

查询接口

它是一个面向对象的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");

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册