HQL语句

使用 hql 语句,要先获取到 Query 对象,hql 语句与 sql 语句的区别是,sql 语句的编写是对表和表中的字段进行操作,hql 语句的编写是对实体类和实体类中的属性进行操作

一:查询全部

from 实体类名

from User

Query query = session.createQuery("from User")

List<User> list = query.list()

二:条件查询

等值查询

from 实体类名 where 实体类属性名=?

from User where uid=?

Query query = session.createQuery("from User where uid=? and uage=?")

使用 query.setParameter() 设置占位符 ?的值,方法有两个参数,第一个参数是给哪一个占位符设置值,第二个参数是值。第一个参数从0开始,第一个?就是0,第二个?就是1

query.setParameter(0,1)

query.setParameter(1,20)

调用方法,执行查询

query.list()

模糊查询

from 实体类名 where 实体类属性名 like ?

from User where username like = ?

Query query = session.createQuery("from User where username like ?")

query.setParameter(0,"%mitu%")

List<User> list = query.list()

三:排序查询

from 实体类名 order by 实体类属性名 asc/desc

Query query = session.createQuery("from User order by uid desc")

List<User> list = query.list()

四:分页查询

hql 语句中,不支持使用 limit 关键字,需要使用 Query 对象的另外两个方法,进行分页的设置。

首先要查询出全部的数据

Query query = session.createQuery("from User")

然后进行分页的设置,设置开始的位置

query.setFirstResult(0)

再进行一页显示的条数

query.setMaxResult(3)

执行查询

List<User> list = query.list()

五:投影查询

投影查询,就是查询某个或某些字段,而不是查询表中的所有字段

select 实体类属性名 from 实体类名

Query query = session.createQuery("select username from User")

List<Object> list = query.list()

六:聚合函数

hql 语句的聚合函数与 sql 相同,区别是 sql 聚合函数中写的是表的字段名,而 hql 中写的是实体类的属性名。hql 语句中的聚合函数,也可以使用 count(*) 去查询符合条件的数据条数。一般使用聚合函数之后,返回的结果都是单一的数值,所以 query 对象提供了返回一个 Object 类型的方法uniqueResult()

查询数量

Query query = session.createQuery("select count(*) from User")

Object count = query.uniqueResult();

查询最大值

Query query = session.createQuery("select Max(userAge) from User")

Object maxAge = query.uniqueResult()

如果返回的结果是 int 类型,可以将 query.uniqueResult()的结果进行toString(),再将 Strng 类型转成 int 类型

int count = Integer.parseInt(query.uniqueResult().toString())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值