hibernate查询方式(三)

QBC查询 (Query By Criteria)

*****QBC查询有三个特点   

            **查询时不写sql语句 而是用方法来查询

            **操作实体类和属性

            **通过criteria对象来实现

 

 

  1.查询所有

//创建对象
Criteria criteria = session.Criteria (Student.class);

//调用方法得到结果
List<Student> list  = criteria.list();

for(Student student : list){
syso(student.getid()+"::::"+student.getname());
} 

 

2.条件查询

//创建对象
Criteria criteria = session.Criteria (Student.class);

//add方法里面使用类的方法实现条件查询 第一个参数是属性  第二个是属性值
 criteria.add(Restrictions.eq("id",1));
 criteria.add(Restrictions.eq("name","张三"));
//调用方法得到结果
List<Student> list  = criteria.list();

for(Student student : list){
syso(student.getid()+"::::"+student.getname());
} 

 

3.条件查询之模糊查询

//创建对象
Criteria criteria = session.Criteria (Student.class);

//add方法里面使用类的方法实现条件查询 第一个参数是属性  第二个是属性值
 criteria.add(Restrictions.eq("name","张%"));
//调用方法得到结果
List<Student> list  = criteria.list();

for(Student student : list){
syso(student.getname());
} 

 

4. 排序查询

//创建对象
Criteria criteria = session.Criteria (Student.class);

//设置对那个属性进行排序,设置排序规则  升序Order.asc("id")
 criteria.addOrder(Order.desc("id"));
//调用方法得到结果
List<Student> list  = criteria.list();

for(Student student : list){
syso(student.getid()+"::::"+student.getname());
} 

 

5.分页查询

//创建对象
Criteria criteria = session.Criteria (Student.class);

//2设置分页数据
//2.1设置开始位置
 criteria.setFirstResult(0);
//2.2每页显示记录数
 criteria.setMaxResults(3);

//调用方法得到结果
List<Student> list  = criteria.list();

for(Student student : list){
syso(student.getid()+"::::"+student.getname());
} 

 

6.统计查询(类似hql中的聚集函数查询)

统计表中记录数

//创建对象
Criteria criteria = session.Criteria (Student.class);

//2设置操作
 criteria.setProjection(Projections.rowCount());

//调用方法得到结果
Object obj =  criteria.uniqueResult();

long longO = (Long)obj;
int count  = longO.intValue();

syso(count);

 

7.离线查询

在ssh框架中 离线查询可以用在action中 在dao层调用方法也可以查询数据库

//创建对象
  DetachedCriteria detachedCriteria = 
                                      DetachedCriteria.forClass(Student.class);  //最终执行的时候才需要session
      Criteria criteria = 
                              detachedCriteria.getExecutableCriteria(session);


//调用方法得到结果
List<Student> list  = criteria.list();

for(Student student : list){
syso(student.getid()+"::::"+student.getname());
} 

 自己感觉hql查询好用些 单凭个人喜好来嘛 因为不同的项目或公司用的技术可能不一样 尽量都掌握

 

转载于:https://www.cnblogs.com/alex96/p/8215140.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值