10.4.1.4. 绑定参数

接口Query提供了对命名参数(named parameters)、JDBC风格的问号(?)参数进行绑定的方法。 不同于JDBC,Hibernate对参数从0开始计数。 命名参数(named parameters)在查询字符串中是形如:name的标识符。 命名参数(named parameters)的优点是:

  • 命名参数(named parameters)与其在查询串中出现的顺序无关

  • 它们可在同一查询串中多次出现

  • 它们本身是自我说明的

  1. //named parameter (preferred)
  2. Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
  3. q.setString("name", "Fritz");
  4. Iterator cats = q.iterate();
  1. //positional parameter
  2. Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
  3. q.setString(0, "Izi");
  4. Iterator cats = q.iterate();
  1. //named parameter list
  2. List names = new ArrayList();
  3. names.add("Izi");
  4. names.add("Fritz");
  5. Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");
  6. q.setParameterList("namesList", names);
  7. List cats = q.list();