大家知道在SQL中进行传递参数,进行查询的时候,我们通常用PreparedStatement,在语句中写一大堆的“?”,在HQL中也可以这样用,如:
List mates=sess.find(
“select employee.name from Employee as employee”+
“where employee.Name=?”
name,
Hibernate.STRING
);
说明:上面利用Session里的find方法,在hibernate的api Session中得载了很多find方法,它可以满足你多种形式的查询。
上面的是一个参数的情形,这种情况下紧接着引入参数和定义参数的类型,当为多个参数,调用另一个find 方法,它的后两个参数都是数组的形式。
还有另外一种方法来解决上边的问题,JDO也有这样的方法,不过和hibernate的表现形式上有差别,但他们两个骨子里却是一样的,如:
Query q =sess.createQuery(“select employee.name from Employee as employee where employee.Name =:name”);
q.setString(“name”,”Jplateau”);
//当有多个参数的时候在此逐一定义
Iterator employees = q.iterate();