我们学习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。