QBC查询方式
QBC(Query By Criteria)查询方式是Hibernate提供的“更加面向对象”的一种检索方式。QBC在条件查询上比HQL查询更为灵活,而且支持运行时动态生成查询语句。?
在Hibernate应用中使用QBC查询通常经过3个步骤?
? (1)使用Session实例的createCriteria()方法创建Criteria对象?
? (2)使用工具类Restrictions的相关方法为Criteria对象设置查询对象?
? (3)使用Criteria对象的list()方法执行查询,返回查询结果?
?????????Restrictions类的常用方法?
Restrictions.eq(String propertyName,Object value)?
等于?
Restrictions.allEq(Map propertyNameValues)?
使用Map key/value进行多个等于的比对?
Restrictions.gt(String propertyName, Object value)?
大于 >??? (gt----->greater than)?
Restrictions.ge(String propertyName, Object value)?
大于等于 >=??? (ge----->greater equal)?
Restrictions.It(String propertyName, Object value)?
小于<(It---->less than)?
Restrictions.Le(String propertyName, Object value)?
小于等于<=(le---->less equal)?
Restrictions.between(String propertyName, Object lo, Object hi)?
对应SQL语句的Between子句?
Restrictions.like(String propertyName, Object value)?
对应SQL语句的LIKE子句?
Restrictions.in(String propertyName, Collection value)?
对应SQL语句的in子句?
Restrictions.and(Criterion lhs, Criterion rhs)?
And关系?
Restrictions.or(Criterion lhs, Criterion rhs)?
Or关系?
Restrictions.sqlRestriction(String sql,Object[] values,Type[] types)?
SQL限定查询?
??????????工具类Order提供设置排序方式?
Order.asc(String propertyName)?
升序排序?
Order.desc(String propertyName)?
降序排序?
?????????工具类Projections提供对查询结果进行统计与分组操作?
Porjections.avg(String propertyName)?
求某属性的平均值?
Projections.count(String propertyName)?
统计某属性的数量?
Projections.countDistinct(String propertyName)?
统计某属性的不同值的数量?
Projections.groupProperty(String propertyName)?
指定一组属性值?
Projections.max(String propertyName)?
某属性的最大值?
Projections.min(String propertyName)?
某属性的最小值?
Projections.projectionList()?
创建一个新的projectionList对象?
Projections.rowCount()?
查询结果集中记录的条数?
Projections.sum(String propertyName)?
返回某属性值的合计?
QBE查询?
?? QBE查询就是检索与指定样本对象具有相同属性值的对象。因此QBE查询的关键就是样本对象的创建,样本对象中的所有非空属性均将作为查询条件。QBE查询的功能子集,虽然QBE没有QBC功能大,但是有些场合QBE使用起来更为方便。?
????????工具类Example为Criteria对象指定样本对象作为查询条件?
Java代码??

