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

  • 相关阅读:
    Integer的疑惑
    简单选择排序算法
    冒泡排序
    插入排序算法java
    BinaryOperator<T>接口的用法示例+BiFunction
    装箱和拆箱、类型比较
    java的Junit的用法(转发)
    htmlnav
    好用的壁纸网站大全
    c# 财务数据编号的生辰
  • 原文地址:https://www.cnblogs.com/alex96/p/8215140.html
Copyright © 2011-2022 走看看