Hibernate 查询方式(HQL/QBC/QBE)汇总
2017-05-25 09:47
351 查看
1. HQL 方式,参数使用问号占位(4.1 版本中已被废弃)
2. HQL 方式,参数使用命名占位
3. HQL 方式,参数使用 JPA 占位符
4. HQL 方式,参数使用对象绑定
PS:需要注意的是命名参数占位要与PO属性一致,而且只能使用参数命名占位的方式。
当然上述的 1--4 填充查询方式,HQL 都可以调整为SQL,是相通的。
5. QBC(Query By Criteria) 方式,参数使用 Restrictions 对象
6. QBC(Query By Criteria) 方式,参数使用对象绑定
PS: QBC(Query By Criteria) 方式,使用到的关键抽象对象有:
Restrictions --> 设置查询限制条件
Order --> 设置查询排序条件
Projections --> 工具类的方法进行统计和分组。
上述 5-6 也是我最喜欢的方式,用面向对象查询方式来迎合面向对象的编程。
7. 离线条件查询
离线查询的好处,可以将查询对象 DetachedCriteria 作为参数传递到 DAO层,减少 DAO 层代码
8. QBC(Query By Criteria) 方式,分页查询
PS: 分页查询主要是要指定两个参数(从什么开始,取多少条):
Query或者Criteria对象的 setFirstResult()和setMaxResults()
当然8中的 Criteria 对象也可以换为 Query 对象,使用 HQL 或者 SQL 查询方式。
public List<UserPO> getUserList(UserPO userPO) { String hql = "from UserPO where name = ? and passwd= ?"; Query query = getHibernateSession().createQuery(hql); query.setParameter(0, userPO.getName()); query.setParameter(1, userPO.getPasswd()); return query.list(); }
2. HQL 方式,参数使用命名占位
public List<UserPO> getUserList(UserPO userPO) { String hql = "from UserPO where name = :userName and passwd= :userPwd"; Query query = getHibernateSession().createQuery(hql); query.setParameter("userName", userPO.getName()); query.setParameter("userPwd", userPO.getPasswd()); return query.list(); }
3. HQL 方式,参数使用 JPA 占位符
public List<UserPO> getUserList(UserPO userPO) { String hql = "from UserPO where name = ?1 and passwd= ?2"; Query query = getHibernateSession().createQuery(hql); query.setParameter("1", userPO.getName()); query.setParameter("2", userPO.getPasswd()); return query.list(); }
4. HQL 方式,参数使用对象绑定
public List<UserPO> getUserList(UserPO userPO) { String hql = "from UserPO where name = :name and passwd= :passwd"; Query query = getHibernateSession().createQuery(hql); query.setProperties(userPO); return query.list(); }
PS:需要注意的是命名参数占位要与PO属性一致,而且只能使用参数命名占位的方式。
当然上述的 1--4 填充查询方式,HQL 都可以调整为SQL,是相通的。
5. QBC(Query By Criteria) 方式,参数使用 Restrictions 对象
public List<UserPO> getUserList(UserPO userPO) { Criteria criteria = getHibernateSession().createCriteria(UserPO.class); criteria.add(Restrictions.eq("name",userPO.getName())); criteria.add(Restrictions.eq("passwd",userPO.getPasswd())); return criteria.list(); }
6. QBC(Query By Criteria) 方式,参数使用对象绑定
public List<UserPO> getUserList(UserPO userPO) { Criteria criteria = getHibernateSession().createCriteria(UserPO.class); criteria.add(Example.create(userPO)); return criteria.list(); }
PS: QBC(Query By Criteria) 方式,使用到的关键抽象对象有:
Restrictions --> 设置查询限制条件
Order --> 设置查询排序条件
Projections --> 工具类的方法进行统计和分组。
上述 5-6 也是我最喜欢的方式,用面向对象查询方式来迎合面向对象的编程。
7. 离线条件查询
public List<UserPO> getUserList(UserPO userPO) { DetachedCriteria detachedCriteria = DetachedCriteria.forClass(UserPO.class); detachedCriteria.add(Restrictions.eq("name",userPO.getName())); detachedCriteria.add(Restrictions.eq("passwd",userPO.getPasswd())); Criteria criteria = detachedCriteria.getExecutableCriteria(getHibernateSession()); return criteria.list(); }
离线查询的好处,可以将查询对象 DetachedCriteria 作为参数传递到 DAO层,减少 DAO 层代码
8. QBC(Query By Criteria) 方式,分页查询
public List<UserPO> getUserList(UserPO userPO) { Criteria criteria = getSession().createCriteria(UserPO.class); criteria.setFirstResult(4); criteria.setMaxResults(3); return criteria.list(); } }
PS: 分页查询主要是要指定两个参数(从什么开始,取多少条):
Query或者Criteria对象的 setFirstResult()和setMaxResults()
当然8中的 Criteria 对象也可以换为 Query 对象,使用 HQL 或者 SQL 查询方式。
相关文章推荐
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate的几种查询方式 HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate学习-07:CRUD(增删改查)操作之查询多条/所有记录HQL、QBC、SQL三种方式
- Hibernate(十五)HQL与QBC查询方式详解
- hibernate查询精典例子(HQL QBC QBE)
- Hibernate查询_HQL_EJBQL_QBC_QBE
- Hibernate(十五)HQL与QBC查询方式详解
- Hibernate的集中查询方式 : hql查询,QBC查询和QBE查询
- Hibernate查询_HQL_EJBQL_QBC_QBE
- Hibernate通常是三种:hql查询,QBC查询和QBE查询:
- Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解
- HQL和QBC和QBE + hibernate检索方式
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate查询(Query Language,hql,ejbql,nativeql,qbc,qbe)
- Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解