package com.svse.dao; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import com.svse.entity.TEmp; import com.svse.util.HibernateSessionFactoryDaoSupportImpl; /* QBC == Query By Criteria * 查询方式是:Hibernate 提供的"更加面向对象"的一种检索方式。QBC 再查询条件上比HQL 更为灵活,而且支持运行时 * 动态生成查询语句 * * */ public class QBCDao extends HibernateSessionFactoryDaoSupportImpl { /** * 获取集合 List ar; */ public void qbcTest(){ Criteria criteria = this.getSession().createCriteria(TEmp.class); criteria.createCriteria("TDept"); //主外键绑定 /* * 设置查询条件:criteria.add() 装载参数 * 条件:EId == 2 * */ criteria.add(Restrictions.eq("EId",2)); /* Restrictions 类的常用方法 */ //1、Restrictions.allEq(map) , 进行多个等于的比对 Map map = new HashMap(); map.put("EId",2); map.put("EName","小王八"); criteria.add(Restrictions.allEq(map)); //2、Restrictions.gt(); -->gt :大于指定列的值 == greter than criteria.add(Restrictions.gt("EId",5)); //3、Restrictions.ge(); -->gt :大于等于指定列的值 == greter equal criteria.add(Restrictions.gt("EId",5)); //4、Restrictions.It(); 小于 less than //5、Restrictions.Le(); 小于等于 less equal; //6、Restrictions.between(); 指定属性在:指定的值之间 criteria.add(Restrictions.between("EId", 1, 5)); //7、Restrictions.like(); 模糊查询 //8、Restrictions.in(); 该属性在集合中的值 criteria.add(Restrictions.in("EName",new String[]{"小红","小明"})); //9、Restrictions.and(); and关系 //10、Restrictions.or(); or关系 /* 工具类Order 提供设置排序方式 */ //Order.asc(); 升序 //Order.desc();降序+ criteria.addOrder(Order.asc("EId")); /* 工具类:Projections 提供对查询结果进行统计与分组操作 */ //11、Projections.avg(); 求某属性的平均值 criteria.setProjection(Projections.avg("EId")); // Projections.countDistinct(); 统计某属性不同值的数量 criteria.setProjection(Projections.countDistinct("EName")); // Projections.max(); 最大值 // Projections.min(); 最小值 // Projections.projectionList(); 创建一个projectionList 对象 // Projections.rowCount(); 查询结果集中的行数 criteria.setProjection(Projections.projectionList()); // Projections.sum(); 计算和 List ar = criteria.list(); } }