HQL查询和QBC查询

HQL:
分页查询

query.setFirstResult((pageNo - 1)*pageSize)  //从第几个开始查询    pageNo:页号 pageSize:每页数据个数
query.setMaxResults(pageSize);		//每页的最大个数
命名查询:
可以将HQL语句放在xxx.hbm.xml文件中
<query name="salaryEmps"><![CDATA[from Employee e where e.salary > :minsal and e.salary < :maxsal]]></query>
调用Query query=session.getNameQuery("salaryEmps");将值传进来	
List<Employee> emps = query.setFloat("minsal",5000)
			.setFloat("maxsal",10000)
			.list;//获取符合条件的数据
投影查询:
可以只查部分属性, 可以利用对应的构造器,让其返回的是对象的集合。
报表查询:
可以利用GROUP BY对数据进行分组,用HAVING 对分组数据设定约束条件。

迫切左外查询:查询出来的Employee表已经被初始化
select distinct d from Deptment d left join fetch d.emps;//去重复,将表Employee和Deptment连接起来。
List<Deptment> depts=query.list();//返回存放实体对象的引用
depts=new ArrayList<>(new LinkedHashSet(depts));//也可以这样去除重复

左外连接:查询出来的Employee表未初始化,每次使用需要重新查询表进行初始化
from Deptment d left join d.emps;
list()方法返回的集合中存放的是对象数组类型。
select distinct d from Deptment d left join d.emps;
这样查询list()方法返回的集合中就包含Deptment对象。

内连接:不返回表中不符合条件的记录
inner join fetch
inner join同上边相似

HQL中显式的使用迫切左外连接  优先于  映射文件中的配置

QBC查询:
//1.创建一个Creteria对象
Criteria critertia=session.createCriteria(Employee.class);
//2.添加查询条件:在QBC中查询条件是用Criterion来表示 Criterion可以通过Restrictions的静态方法得到。
criteria.add(Restrictions.eq("email","SKUMAR"));
criteria.add(Restrictions.gt("salary",5000F));
//3.执行查询:
Employee employee=(Employee)criteria.uniqueResult();
System.out.println(employee);
AND查询:使用Conjunction表示,Conjunction本身就是一个Criterion对象,且其中还可以添加Criterion对象
OR查询:使用Disjunction表示
统计查询:使用Projection来表示:可以由Projections的静态方法得到。
添加排序:criteria.addOrder(Order.asc("salary"));
criteria.addOrder(Order.desc("email"));
添加翻页方法:criteria.setFirstResult((pageNo-1)*pageSize)
.setMaxResults(pageSize)
.list();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值