QBC查询语法

       前言

        Hibernate框架中独有的查询语法QBC(Query By Criteria),与HQL相同的是,是一种比HQL更加的面向对象的查询语言。在框架中使用Criteria的实例对数据库的访问,封装了许多的条件查询,让开发者不需要手动打查询语法比HQL更为的简便。


QBC查询语法的使用
  1. 通过SessionFactory工厂创建Session实例

    Session session = SessionFactory.getCurrentSession();
  2. 调用Session实例打开事务

    Transaction tx = session.beginTransaction();
  3. 创建Criteria实例

    Criteria criteria = session.createCriteria(Emp.class);
  4. 添加查询语句

    criteria.add(Restrictions.eq("id","1"));
  5. Criteria是延迟加载需要提交之前放入集合

    List<Emp> emps = criteria.list();
  6. 提交事务

    tx.commit();

简单的使用示例
    public List<Emp> CriteriaEmpCheck(EmpCheck empCheck){
    Transaction tx = null;
    List<Emp> list = null;
    try {
        tx = empDao.currSession().beginTransaction();
        Criteria criteria = empDao.currSession().createCriteria(Emp.class);
        criteria.add(Restrictions.like("ename",empCheck.getEnamelike()));
        criteria.add(Restrictions.between("hiredate",
                Tool.strToDate(empCheck.getCurrDate(),"yyyy-MM-dd"),
                Tool.strToDate(empCheck.getEndDate(),"yyyy-MM-dd")));
        criteria.add(Restrictions.between("sal",
                empCheck.getCurrSal(),empCheck.getEndSal()));
        list = criteria.list();
        tx.commit();
    }catch (HibernateException e){
        e.printStackTrace();
        if (tx!=null){
            tx.rollback();
        }
    }catch (Exception e){
        e.printStackTrace();
    }
    return list;
}