这是最常见和用户友好的方式。它使用冒号后跟参数名称 (:example) 来定义命名参数
示例 1:使用 setParameter() 方法
String hql = "from Student s where s.registerNumner = :registerNumner";
List result = session.createQuery(hql).setParameter("registerNumner", "12345").list();
setParameter() 方法足够聪明,可以发现绑定变量的参数数据类型。
示例 2:使用 setString() 方法
你可以使用 setString 告诉 Hibernate 这个参数的日期类型是 String。
String hql = "from Student s where s.registerNumber = :registerNumber";
List result = session.createQuery(hql).setString("registerNumber", "12345").list();
示例 3:使用 setProperties() 方法
这个功能很棒!您可以将对象传递到参数绑定中。Hibernate 会自动检查对象的属性并匹配冒号参数。
Student student = new Student();
Student.setRegisterNumber("12345");
String hql = "from Strudent s where s.registerNumber = :registerNumber";
List result = session.createQuery(hql).setProperties(student).list();
示例 4:
您也可以使用位置参数。
String hql = "from Student s where s.registerNumber = ? and s.studentName = ?";
List result = session.createQuery(hql).setString(0, "12345").setParameter(1, "Harshad").list();
但它很容易被破坏,因为绑定参数的位置(即索引)的每次更改都需要更改参数绑定代码
批次选择:
您可以使用以下方式进行批量选择
String hql = "from Users s where s.id= :userId";
List finalResult = new ArrayList();
for(int i=0; i< 10;i++){
List result = session.createQuery(hql).setParameter("userId", i).list();
finalResult.addCollection(result );
}