Hibernate在HQL中查询的方法有哪些
本篇内容介绍了“Hibernate在HQL中查询的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网站空间、营销软件、网站建设、肇庆网站维护、网站推广。
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()); }
这是很简单的分页查询,分页查询实现比这个复杂多了,分页查询采用的相当于数据库里面的 limit ,来限制一次查询显示的条数。
“Hibernate在HQL中查询的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
本文标题:Hibernate在HQL中查询的方法有哪些
文章源于:http://scyanting.com/article/jioiij.html