Hibernate检索方式:离线条件查询

投影查询:就是只查询某几个属性的时候
05-Hibernate检索方式:离线条件查询
如果是QBC的只想显示某几个属性,可以通过setProjection(),往list集合里添加属性。

05-Hibernate检索方式:离线条件查询


在HQL查询语句中可以调用聚合函数
count()
min()
max()
sum()
avg()

报表查询就是使用聚合函数
05-Hibernate检索方式:离线条件查询

05-Hibernate检索方式:离线条件查询
05-Hibernate检索方式:离线条件查询


查出来是30条记录


分组直接可以用group by进行分组统计,这和我们的SQL是一样的


在映射文件中使用命名方式查询

我们可以在Customer.hbm.xml中配置一个query标签,也可以使用sql-query标签。

如果是query标签,那就是HQL,我们给它取名叫findAll();
这个时候就有查询名称了

05-Hibernate检索方式:离线条件查询



05-Hibernate检索方式:离线条件查询



05-Hibernate检索方式:离线条件查询



这样就把客户的信息给打印出来


所以可以直接用命名的查询方式


离线的条件查询
   DetachedCriteria,criteria是叫条件查询,Detached叫脱管的或者离线的



struts2有一个高级查询:
   按姓名来查询的:
   也可以按性别查询:
   也可以按学历查询:
   也可以按电话查询:
   也可以按是否上传简历:
 
 
我只要一点查询就可以查里面的数据了
 
 
struts就是web层的框架,web层会调用业务层service层,service层才会调用dao层,session只有在dao层才有,这些数据是怎么从web层传到dao层,有的时候数据是不在你这个对象里的
 
 
 
 
是否上传简历,我们是有这种查询的,这个字段不在数据库里的,我们只能判断为不为空而已,isUpload(),我们要在web层接收这个数据,假如这几个对象都不在user里面,user里面都没有这几个字段,我们要在web层把数据通通都拿到,把数据都提交到web层来,我们当时是怎么传到service层的。
UserService us = new UserService();
//我们调用UserService里的findByCondition()
//传一个user,isUpload
us.findByCondition(user, isUpload);
但是isUpload没有封装上,没有在user里面,假如我们这些字段都没有在这里面,那就得一个个传进去
us.findByCondition(useName,sex,edu,,tel, isUpload);
但是这样查的话,假如我高级字段非常多,传起来特别麻烦,传统方式只能这样去调用了
 
 
现在我们就可以在web层获得一个对象,获得到DetachedCriteria,在web层获得一个离线的Criteria,Criteria得有session才可以创建它,session.createCriteria才会有它,现在在web层就可以拿到一个叫离线的,在web层将这个条件设置好,怎么去设置,就可以用criteria调用add(),
criteria.add(Restrictions,eq("name","zhangsan"));
criteria.add(Restrictions,eq("sex","man"));
criteria.add(Restrictions,eq("edu","...."));
 
 
现在就有一个离线的对象了
 
//直接new一个userService
     UserService userService = new UserService();
     //直接传一个criteria对象,传到service层
       us.findByCondition(criteria);
 
service层就有这个方法了,service层再来调用你的DAO层,DAO层里有session对象,session有了,它就拿到一个离线的criteria,session中获得一个可以执行的criteria对象,把离线的一传进来就可以执行了,离线的做条件查询,有一些数据你是没有办法封装的,那你直接就可以在web层把数据封装好,到时候直接查询dao层,
 

 
05-Hibernate检索方式:离线条件查询



05-Hibernate检索方式:离线条件查询



我们可以用离线查询来做高级查询的方式
 
05-Hibernate检索方式:离线条件查询


这些都是它提供的查询方式
 

如果是比较简单的查询就用HQL就可以了
 
 
 
如果条件非常繁琐就用QBC
 
05-Hibernate检索方式:离线条件查询

HQL和QBC都可以做带条件的查询
 
 
如果条件特别复杂就用QBC
 
 
如果操作特别简单的话就用HQL就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值