zoukankan      html  css  js  c++  java
  • 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查询好用些 单凭个人喜好来嘛 因为不同的项目或公司用的技术可能不一样 尽量都掌握

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/alex96/p/8215140.html
Copyright © 2011-2022 走看看