1.全选
org.hibernate.Query query = session.createQuery("from Student");
java.util.Iterator iterator = query.list().iterator();
tx.commit();
while (iterator.hasNext()){
Student student = (Student)iterator.next();
System.out.println("--------------------------------");
System.out.println(student.getStudentId());
System.out.println(student.getName());
}
注意:查询语句中的不是表格名而是对象名,所以必须大写
2.选择
(1)固定参数
org.hibernate.Query query = session.createQuery("from Student s where s.name='朱红'");
java.util.Iterator iterator = query.list().iterator();
tx.commit();
while (iterator.hasNext()){
Student student = (Student)iterator.next();
System.out.println("--------------------------------");
System.out.println(student.getStudentId());
System.out.println(student.getName());
}
(2)位置参数
org.hibernate.Query query = session.createQuery("from Student s where s.id=?");
query.setParameter(0,"001");
java.util.Iterator iterator = query.list().iterator();
tx.commit();
while (iterator.hasNext()){
Student student = (Student)iterator.next();
System.out.println("--------------------------------");
System.out.println(student.getStudentId());
System.out.println(student.getName());
}
(3)命名参数
org.hibernate.Query query = session.createQuery("from Student s where s.id=:student_id");
query.setParameter("student_id","007");
java.util.Iterator iterator = query.list().iterator();
tx.commit();
3.投影
org.hibernate.Query query = session.createQuery("select s.studentId,s.name from Student s ");
java.util.Iterator iterator = query.list().iterator();
while (iterator.hasNext()){
Object[] row = (Object[])iterator.next();
System.out.println("--------------------------------");
System.out.println((String)row[0]);
}
//执行的过程中存在奇怪的问题,只查询一个表,只查询一列时候才出现的错误,只要选择两列以上就没问题了
//查询两个以上表格时,也存在该问题
4.连接
根据子类查找父类信息
org.hibernate.Query query = session.createQuery("select c.id,c.className from Zlass c inner join c.students s where s.studentId='001'");
java.util.Iterator iterator = query.list().iterator();
while (iterator.hasNext()){
Object[] row = (Object[])iterator.next();
System.out.println("--------------------------------");
System.out.println((String)row[0]+(String)row[1]);
}
//根据父类查找子类
org.hibernate.Query query = session.createQuery("from Zlass c where c.id='971002'");
java.util.Iterator iterator = query.list().iterator();
while (iterator.hasNext()){
Zlass row = (Zlass)iterator.next();
java.util.Iterator i = row.getStudents().iterator();
while(i.hasNext()){
Student s = (Student)i.next();
System.out.println("--------------------------------");
System.out.println(s.getStudentId()+" "+s.getName());
}
}
//根据父类查找子类2,使用elements
org.hibernate.Query query = session.createQuery("select elements(c.students) from Zlass c where c.id='971002'");
java.util.Iterator iterator = query.list().iterator();
while (iterator.hasNext()){
Student s = (Student)iterator.next();
System.out.println("--------------------------------");
System.out.println(s.getStudentId()+" "+s.getName());
}
|
|
来自: WindySky > 《hibernate》