QBC检索方式

来源:互联网 发布:云计算需求调研报告 编辑:程序博客网 时间:2024/06/07 04:04

  QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口,下面通过几个Demo来介绍QBC的简单使用方法。

@Test    public void testQBC1(){        //1. 创建一个 Criteria 对象        Criteria criteria = session.createCriteria(Employee.class);        //2. 添加查询条件: 在 QBC 中查询条件使用 Criterion 来表示        //Criterion 可以通过 Restrictions 的静态方法得到        criteria.add(Restrictions.eq("email", "SKUMAR"));        criteria.add(Restrictions.gt("salary", 5000F));        //3. 执行查询        Employee employee = (Employee) criteria.uniqueResult();        System.out.println(employee);     }
@Test    public void testQBC2(){        Criteria criteria = session.createCriteria(Employee.class);        //1. AND: 使用 Conjunction 表示        //Conjunction 本身就是一个 Criterion 对象        //且其中还可以添加 Criterion 对象        Conjunction conjunction = Restrictions.conjunction();        conjunction.add(Restrictions.like("name", "a", MatchMode.ANYWHERE));        Department dept = new Department();        dept.setId(80);        conjunction.add(Restrictions.eq("dept", dept));        System.out.println(conjunction);         //2. OR        Disjunction disjunction = Restrictions.disjunction();        disjunction.add(Restrictions.ge("salary", 6000F));        disjunction.add(Restrictions.isNull("email"));        criteria.add(disjunction);        criteria.add(conjunction);        criteria.list();    }
@Test    public void testQBC3(){        Criteria criteria = session.createCriteria(Employee.class);        //统计查询: 使用 Projection 来表示: 可以由 Projections 的静态方法得到        criteria.setProjection(Projections.max("salary"));        System.out.println(criteria.uniqueResult());     }
@Test    public void testQBC4(){        Criteria criteria = session.createCriteria(Employee.class);        //1. 添加排序        criteria.addOrder(Order.asc("salary"));        criteria.addOrder(Order.desc("email"));        //2. 添加翻页方法        int pageSize = 5;        int pageNo = 3;        criteria.setFirstResult((pageNo - 1) * pageSize)                .setMaxResults(pageSize)                .list();    }
0 0
原创粉丝点击