简述Hibernate在HQL中查询实例

我们学习Hibernate查询是知道HQL支持条件查询,分为好多方面,这里我们就具体Hibernate查询用实例来加以说明,希望对读者的学习带来帮助。

1、支持字符串方式参数传递查询:

例子:

List students = session.createQuery("select s.id,s.name from Student s where s.name like '%1' ").list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




                Object[] o = (Object[])iter.next();  



                System.out.println(o[0]+","+o[1]);  


            } 

由于,涉及到多个属性查询,所以返回的是Object数组类型。

2、支持类似于PrepareStatement方式的?传递参数查询

例子:

List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")  


                                                .setParameter("goodname", "%1%").list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




               Object[] o = (Object[])iter.next();  



               System.out.println(o[0]+","+o[1]);  


           } 

要设置参数从0开始,见第2行。

3、去变量方式参数传递

例子:

List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")  


                                                .setParameter("goodname", "%1%").list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




               Object[] o = (Object[])iter.next();  



                System.out.println(o[0]+","+o[1]);  


           } 

这个跟2中的相似,只是多了参数可以归为一类。

4、支持多参数传递

例子:

List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")  


            .setParameterList("myids", new Object[]{1, 2, 3, 4, 5,32,13,14})  


                .list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




                Object[] o = (Object[])iter.next();  



                System.out.println(o[0]+","+o[1]);  


            } 

注意调用方法是setParameterList。

5、调用数据库里面的函数

例子:

List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")  


           .setParameter(0, "2008-10")  


                .list();  



           for (Iterator iter=students.iterator(); iter.hasNext();) {  




                Object[] o = (Object[])iter.next();  



               System.out.println(o[0]+","+o[1]);  


           } 

数据库函数date_format。

6、直接支持sql查询

例子:

List students = session.createSQLQuery("select *from t_student").list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




               Object[] o = (Object[])iter.next();  



                System.out.println(o[0]+","+o[1]);  


           } 

只需要调用session里面的createSQLQuery方法即可。

7、进行导航查询

例子:

List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




               String s = (String)iter.next();  



                System.out.println(s);  


            } 

这种查询很方便。

8、分页查询

例子:

List students = session.createQuery("from Student").setFirstResult(0).setMaxResults(3).list();  



            for (Iterator iter=students.iterator(); iter.hasNext();) {  




                Student student = (Student)iter.next();  



                System.out.println(student.getName());  


            } 

hql

相关推荐