hql查询_简单属性查询

 //创建Query对象

        Query query=session.createQuery("select Student.sname,Student.sdept from Student");

        List list=query.list();        //执行查询

        //以下代码显示查询的信息

        Iterator it=list.iterator();

        while(it.hasNext()){

                Object[] stu=(Object[])it.next();

                System.out.println("id"+stu[0]);

                System.out.println("name"+stu[1]);

                System.out.println("\n");

        }

单一属性查询
//返回结果集属性列表,元素类型和实体类中相应的属性类型一致
List students = session.createQuery("select name from Student").list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
String name = (String)iter.next();
System.out.println(name);
}

 

多个属性查询
//查询多个属性,其集合元素是对象数组
//数组元素的类型和对应的属性在实体类中的类型一致
//数组的长度取决与select中属性的个数
List students = session.createQuery("select id, name from Student").list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
   Object[] obj = (Object[])iter.next();
   System.out.println(obj[0] + "," + obj[1]);
}

 

返回Student实体对象

//可以采用hql动态实例化Student对象
//此时list中为Student对象集合
List students = session.createQuery("select new Student(id, name) from Student").list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
Student student = (Student)iter.next();
System.out.println(student.getId() + "," + student.getName());
}

注意:使用这种方式,Class Student中要有一个此处参数对应的构造函数。即要有Student(id, name)构造函数。

 

使用别名(as 可有可无)
List students = session.createQuery("select s.id, s.name from Student as s").list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
Object[] obj = (Object[])iter.next();
System.out.println(obj[0] + "," + obj[1]);
}

 

 


List students = session.createQuery("from Student").list();
List students = session.createQuery("from Student s").list();
List students = session.createQuery("from Student as s").list();
List students = session.createQuery("select s from Student as s").list();
List students = session.createQuery("select * from Student").list();

 

 

更新中

你可能感兴趣的:(HQL)