Hibernate 检索方式

HQL 检索方式

概括

HQL是一种面向对象的查询语言;
HQL语句中关键字的大小写无关;

运算符使用

比较运算符:=;<>;>=;<=;>;<;is null;is not null;
范围运算符:in; not in; between...and;not between...and;
字符串模式匹配运算符:like 
逻辑运算符:and,or,not

关键字使用

提供了Query查询接口;
HQL语句中的 from 关键字后面加的时 类名 而不是 数据库表名 ,而 类名 区分大小写

Query query =session.create("from User");
List userList=query.list();
等价于
String hql="select username from User username ";
Query query=session.createQuery(hql);
List userList=query.list();

where 子句中给出的是类的属性名 而非数据库表字段名,其中属性名必须区分大小写
String hql=" from User where userName=‘张三’";
as 用来指定别名查询//可省略
HQL检索一个类的实例时,如果查询语句的其他地方需要引用它,可以给类指定一个别名
from User where userName=‘张三 ’;
from User as u where u.userName=‘张三’;//使用 as 指定别名
from User u where u.userName=‘张三’;//省略as 关键字

查询

支持别名查询

见 as 关键字使用

支持多态查询

多态查询可以查询出当前类以及所有子类的实例

Employee 有两个子类:HourEmployee 和 SalaryEmployee
Query query =session.createQuery("from Employee");
List employeeList=query.list();

检索单个对象

list(): 返回List类型的查询结果,返回所有满足条件的对象
uniqueResult():返回单个对象

	Query query = session.createQuery("from User u where u.userName='张三'"); 
	User user = (User)query.uniqueResult(); //若有多个对象符合查询条件则会抛出异常

分组与排序

order by 子句

from User u order by u.userName ;//根据userName升序排列
from User u order by u.userName desc;//根据userName升序排列sc 
from User u order by u.userName, u.id desc//优先根据userName升序排列,次级排序为 id 降序
from User u order by u.userName desc, u.id desc//优先根据userName 降序排列,次级排序为 id 降序

group by 子句

select count(u) from User u group by u.age ;//按照 age 属性 分组

QBC检索方式

检索策略

立即检索:立即加载检索方式指定的对象

延迟检索:延迟加载检索方式制定的对象
左外连接检索:利用SQL外连接查询功能检索方法指定对象

	减少执行select语句,减少数据库访问,提高系统性能

类级别的检索策略
可选的检索策略:立即检索;延迟~;
默认的检索策略: 立即检索 (除Session的load() 默认延迟检索)

关联级别的检索策略
可选的检索策略:立即检索;延迟~;左外连接 ~;
默认的检索策略:延迟检索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值