HQL语句详解

您所在的位置:网站首页 sql查询语句中星号的用法和意义 HQL语句详解

HQL语句详解

2024-01-24 02:10| 来源: 网络整理| 查看: 265

什么是HQL呢?

 HQL是Hibernate Query Language的缩写,提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。同时也提供了更加面向对象的封装。

完整的HQL语句形势如下:  Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc 非常类似标准的SQL语句。

1、 实体查询: String hql = "from Customer c"; //查询admin实体类所有的数据 List list = session.createQuery(hql).list(); //

可以看到所有的关联信息全部查出来了。 上面的代码执行结果是,查询出Customer实体对象所对应的所有数据,而且将数据封装成Admin实体对象,并且放入list中返回。

 因为HQL语句与标准SQL语句相似,所以我们也可以在HQL语句中使用where字句,并且可以在where字句中使用各种表达式,比较操作符以及使用“and”,”or”连接不同的查询条件的组合。 看下面的一些简单的例子:

from User user where user.age=20; //查询年龄为20的用户 from User user where user.age between 20 and 30;//查询年龄在20~30的用户 from User user where user.age in(20,30);//查询年龄为20,或30的用户 from User user where user.name is null;//查询用户姓名为空的用户 from User user where user.name like ‘%zx%’;//模糊查询带有“zx”的用户 from User user where (user.age%2)=1;//查询用户年龄为奇数的用户 from User user where user.age=20 and user.name like ‘%zx%’;//查询年龄为20,并且姓名带有“zx”的用户 2.实体的更新与删除

  如果我们想将数据库中所有18岁的用户的年龄全部改为20岁,那么我们要首先将年龄在18岁的用户检索出来,然后将他们的年龄修改为20岁,最后调用Session.update()语句进行更新。如下面的代码:

Transaction trans=session.beginTransaction();//创建事务对象 String hql=”update User user set user.age=20 where user.age=18”; Query queryupdate=session.createQuery(hql); int ret=queryupdate.executeUpdate();//执行更新 trans.commit();//提交任务 3. 属性查询

 很多时候我们在检索数据时,并不需要获得实体对象所对应的全部数据,而只需要检索实体对象的部分属性所对应的数据。这时候就可以利用HQL属性查询技术,如下面程序示例: 1)返回默认查询出来的list里存放的是一个Object数组,还需要转换成对应的javaBean。

String hql = "select c.name,c.account from Customer c";//查询客户姓名和账号名 Query query = session.createQuery(hql); List list = query.list();//得到一个list集合 String string = JSON.toJSONString(list);//为了方便直接输出为字符串 System.out.println(string);

如下图: 和上面的实体查询结果对比就知道了,这一次没有把所有的级联数据查出来。 2)第二种方式是通过HQL语句new POJO()实现,方法如下: 注意:创建一个对象必须有对应的构造器,要不然会报错。

String hql = "select new Customer(c.name,c.account,c.password,c.gender,c.identityId,c.tel) from Customer c"

这样就可以直接用对象调用属性打印了。 结果图:

4.分组与排序

 与SQL语句相似,HQL查询也可以通过order by子句对查询结果集进行排序,并且可以通过asc或者desc关键字指定排序方式,和标准的SQL一样默认升序排列,如下面的代码:

String hql = "from Line L order by L.price "; 5.参数绑定

在Hibernate中共存在4种参数绑定的方式,下面我们将分别介绍: 1)按参数名称绑定: 在HQL语句中定义命名参数要用”:”开头,形式如下:

String hql = "from Line L where L.days=:days";//根据天数查询 Query query = session.createQuery(hql); query.setInteger("days",1);//按名字天数绑定 List list = query.list(); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3