Hibernate中,HQL语句与sql语句有很大的相似,使用HQL语句的基本步骤如下:
(1)编写HQL语句
(2)获取Hibernate session对象
(3)调用Session的createQuery(String queryString)方法,创建给定的HQL语句的新的Query对象,或者调用getNamedQuery(String queryName)方法,获得在映射文件中定义的指定名称的HQL语句的query实例。
(4)如果HQL语句需要使用参数,则调用Query对象的setParameter()方法为参数赋值,否则直接执行下一步操作。
(5)调用Query对象的list()方法执行查询,得到查询结果。
HQL中的参数嵌入
参数嵌入一:使用名称占位符
参数嵌入二:使用位置占位符
(1)编写HQL语句
(2)获取Hibernate session对象
(3)调用Session的createQuery(String queryString)方法,创建给定的HQL语句的新的Query对象,或者调用getNamedQuery(String queryName)方法,获得在映射文件中定义的指定名称的HQL语句的query实例。
(4)如果HQL语句需要使用参数,则调用Query对象的setParameter()方法为参数赋值,否则直接执行下一步操作。
(5)调用Query对象的list()方法执行查询,得到查询结果。
//示例:HQL语法与SQL基本相似
String queryString="from Student";
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(queryString);
List list=query.list();
System.out.println("学号 姓名");
System.out.println("--------------------------------");
for(int i=0;i<list.size();i++){
Student student1=(Student) list.get(i);
System.out.println(student1.getStudentNumber()+" "+student1.getStudentName());
}
HQL中的参数嵌入
参数嵌入一:使用名称占位符
String queryString ="from Student as student where student.studentName like: studentName";
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(queryString);
query.setString("studentName","%王%");
List list=query.list();
参数嵌入二:使用位置占位符
String queryString ="from Student as student where student.studentName like ?";
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(queryString);
query.setString(0,"%王%"); //从0开始,sql从1开始
List list=query.list();