分享

HQL常用查询

 WindySky 2007-10-10
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());
      }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约