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(); }