第五章实用技术
5.1使用HQL查询语句
一、Hibernate支持哪三种查询方式?
二、HQL语句中除了和外,区分大小写。 1. from 子句举例 P140
2. select子句用于。 3. where子句用于。 4.使用表达式 5. order by子句 三、如何执行HQL语句 1.声明变量并初始化 String hql=”from Emp”; 2. 构建Query对象
Query query=session.createQuery(hql);
Query对象构建好以后,执行查询语句,并获取查询结果。有两种方式执行查询,一种是Query对象的list()方法,另一种是Query对象的iterator()方法。
示例1:
(1)使用list()方法执行查询,并输出结果
import java.util.List;
importorg.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session;
import org.hibernate.SessionFactory; importorg.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
importentity.Dept; importentity.Emp;
publicclass test {
/**
* @param args */
publicstaticvoid main(String[] args) { }
Configuration conf = null;
SessionFactory sessionFactory = null; Session session = null; try { }
// 1.读取配置文件
conf = new Configuration().configure(); // 2.创建SessionFactory
sessionFactory = conf.buildSessionFactory(); // 3. 打开session
session = sessionFactory.openSession(); // 声明变量并初始化
String hql = \;
// 构建query对象
Query query = session.createQuery(hql); // 执行查询
List
for (Emp emp : empList) {
System.out.println(\员工姓名:\ + emp.getEmpName()); }
e.printStackTrace(); // 7. 关闭session
if (session != null)
session.close();
} catch (Exception e) { } finally {
}
List()方法生成一条SQL查询语句,查询所有符合条件的记录 (2)使用iterator()方法执行查询 修改以上代码如下
import java.util.Iterator;
// 执行查询
Iterator
Emp emp = null;
// 遍历并输出结果
while (empIterator.hasNext()) {
// 为变量赋值
emp = empIterator.next();
System.out.println(\员工姓名:\ + emp.getEmpName()); }
Iterator()方法首先查询所有符合条件的主键值,此处是empno,然后在需要某一对象的其他属性值时,才生成按主键查询的SQL语句,此处是
select
emp0_.empno as empno1_0_, emp0_.ename as ename1_0_, emp0_.job as job1_0_, emp0_.sal as sal1_0_,
emp0_.hireDate as hireDate1_0_ from
scott.emp emp0_ where
emp0_.empno=?
四、执行HQL语句的步骤
1.获取session对象 2.编写hql语句 3.创建query Query query = session.createQuery(hql); 4.执行查询,得到查询结果
5.2 在HQL查询语句中绑定参数 一、参数绑定形式
1. 按参数位置绑定
用“?”占位符来定义参数的位置
调用setXXX()方法来绑定参数,第一个参数位置为零。 示例3: /** * 设置占位符 */
publicclass test {
publicstaticvoid main(String[] args) {
SessionFactory sessionFactory = null; Session session = null; try {
sessionFactory = new Configuration().configure()
.buildSessionFactory();
session = sessionFactory.openSession();
// 设置占位符
String hql = \; Query query = session.createQuery(hql); // 为占位符赋值
query.setString(0, \);
Iterator
System.out.println(\部门地址为 :\ + it.next().getLocation()); }
}
}
}
e.printStackTrace(); if (session != null)
session.close();
} catch (Exception e) { } finally {