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);  -->

    

     

原文地址:https://www.cnblogs.com/alex96/p/8214787.html