• hibernate查询方式(二)


    1.HQL查询(hibernate query language) 操作的是实体类和属性

      *查询所有记录

        

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 创建Query对象,
        String hql = "from Student";    //from后面是实体类名
       Query query = session.createQuery("hql");
    
    //(2)调用方法得到结果
    List<Student> list = query.list();
    
    //(3)遍历输出
    for( Student student : list){
      syso(student.getid()+":::"+student.getname());
    }

    2.条件查询

     *****1.

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 创建Query对象,
        String hql = "from Student where id=? and name=?";  
       Query query = session.createQuery("hql");
    
    //设置条件值
    //第一个参数是?的位置 类型是int  第二个参数是设置的值
      query.setParameter(0,1);
      query.setParameter(1,"张三");
    
    //(3)调用方法得到结果
    List<Student> list = query.list();
    
    //(4)遍历输出
    for( Student student : list){
      syso(student.getid()+":::"+student.getname());
    }

    **********2.模糊条件查询

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 创建Query对象,
        String hql = "from Student where  name like ?";  
       Query query = session.createQuery("hql");
    
    //设置条件值
    //第一个参数是?的位置 类型是int  第二个参数是设置的值
    //查询以张开头的姓名
      query.setParameter(0,"张%");
    
    //(3)调用方法得到结果
    List<Student> list = query.list();
    
    //(4)遍历输出
    for( Student student : list){
      syso(student.getid()+":::"+student.getname());
    }

      3.排序查询

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 创建Query对象,升序查询asc 降序查询desc;
        String hql = "from Student order by cid asc";  
       Query query = session.createQuery("hql");
    
    //(3)调用方法得到结果
    List<Student> list = query.list();
    
    //(4)遍历输出
    for( Student student : list){
      syso(student.getid()+":::"+student.getname());
    }

     4.分页查询

        在mysql中实现分页使用关键字limit实现

    SELECT * FROM Student  LIMIT 0,5
    //0是起始位置 5是显示最多纪录数

       在hibernate中封装了两个方法来实现分页查询的操作

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 查询所有 创建Query对象,
        String hql = "from Student";  
       Query query = session.createQuery("hql");
    
    //设置分页数据
    query.setFirstResult(0);
    query.setMaxResults(5);
    
    //(3)调用方法得到结果
    List<Student> list = query.list();
    
    //(4)遍历输出
    for( Student student : list){
      syso(student.getid()+":::"+student.getname());
    }

    5.投影查询

        *****查询的是表中的某一字段的所有值

        

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 创建Query对象,
        String hql = "select  name from Student";  
       Query query = session.createQuery("hql");
    
    
    //(3)调用方法得到结果 泛型的类型这里可以是String 如果多个字段的类型不一样 可以写Object
    List<Object> list = query.list();
    
    //(4)遍历输出
    for( Object object : list){
      syso(object);
    }

    6.聚集函数

    *****常见的几种聚集函数  count avg min max sum ;

       在这里演示查询表中的记录数

    //1.hql查询操作会使用Query对象
    //  (1)写sql语句 创建Query对象,
        String hql = "select count(*) from Student";  
       Query query = session.createQuery("hql");
    
    
    
    //(3)调用方法得到结果 这里用query对象方法直接返回对象形式 不需要list
    Object obj = query.uniqueResult();
    syso(obj);
    
    <-- 注意 上面的那个方法返回类型是Object 如果要返回int或者其他类型  咱们首先考虑到会进行类型的强转 但是在这里会输出异常  异常类型是类型转换异常(ClassCastException) 所以我们要先把Object类型转换成long类型 在转换成Integer类型;
     Long longO = (Long)obj;
     int count = longO.intValue();
    syso(count);  -->

        

         

  • 相关阅读:
    iOS 代码规范
    Clang Format
    PullToRefreshListView手动刷新问题
    android不依赖具体activity弹出Dialog对话框,即全局性对话框
    我的手机华为荣耀7,运行android程序不输出Log
    Android从imageview中获得bitmap
    Fragment里面的ViewPager嵌套subFragment,主Fragment切换的时候subFragment出现空白Fragment的Bug
    解决某些手机RadioGroup中的RadioButton不居中的问题
    Android权限大全
    UML类图
  • 原文地址:https://www.cnblogs.com/alex96/p/8214787.html
Copyright © 2020-2023  润新知