1. 程式人生 > >HQL初步瞭解佔位符

HQL初步瞭解佔位符

HQL是一種面向物件的查詢語言,其中沒有表和欄位的概念,只有類,物件和屬性的概念。格式:from + 類名 + 類物件 + where + 物件的屬性

  • 在HQL中有兩種方法實現佔用符方法

    • 使用 ?

      使用?設定引數佔位符,之後通過setString()和setInteger()等方法為其賦值。如:

      @Autowired
      private EntityManager em;
      
      private List queryUser(){
      
      String hql = "select u from User as u where u.userName = ? and u.passWord = ? "
      ; Query query = em.createQuery(hql.toString()); query.setParameter(0, user.getUserName()); query.setParameter(1, user.getPassWord()); return query.getResultList(); }
    • 使用引數名稱

      使用名稱作為佔位符不用依照引數的順序來設定引數,並且使用HQL具有更好的可讀性。如:

      @Autowired
      private EntityManager em;
      
      private List queryUser(User user){
      
      String hql = "select u from User as u where u.userName = :userName and u.passWord = :passWord and u.status in(:status)"
      ; Query query = em.createQuery(hql.toString()); query.setParameter("userName", user.getUserName()); query.setParameter("passWord1", user.getPassWord()); query.setParameter("status",user.getInStatus()); return query.getResultList(); }

注意:在hibernate中佔位符“?”填充引數下表從 0開始。