Criteria

来源:互联网 发布:网络机顶盒爱奇艺会员 编辑:程序博客网 时间:2024/04/30 23:06
Hibernate之Criteria查询:
由于采用Hql语句查询,会发出多余的sql命令,查询效率低,所以我们采用Criteria查询,效率比较高。
Criteria查询的基本语句如下:
          Criteria criteria=session.createCriteria(Emp.class);
          criteria.add(Restrictions.like("name", "张%"));
          List<Emp> list=criteria.list();
     第一句话是得到这个类,第二句话就是添加条件,Restrictions.like("name", "张%")表示姓名中以“张”开头的。
最后返回一个list对象。
1.Criteria多条件查询:
     代码如下:
     Session session = HibernateUtil.getSession();
     Criteria criteria = session.createCriteria(Emp.class).add(
               Restrictions.like("name", "张%")).createCriteria("dept").add(
               Restrictions.eq("name", "市场部"));
     List<Emp> list = criteria.list();
     这是一个级联查询。首先查询了Emp中姓名以“张”开头的,后面还查询了dept中姓名是“市场部”。eq表示“=”
2.Criteria投影查询:
     Session session = HibernateUtil.getSession();
     Projection projection = Projections.projectionList().add(
               Property.forName("e.name")).add(Property.forName("d.name"));
     Criteria criteria = session.createCriteria("Emp", "e").setProjection(
               projection).createAlias("dept", "d").add(
               Restrictions.like("e.name", "张%")).createCriteria("dept").add(
               Restrictions.eq("d.name", "市场部"));
     List<Object[]> list = criteria.list();
     返回的是一个list类数组。
3.Crateria数量查询:
          Session session = HibernateUtil.getSession();
          Criteria criteria = session.createCriteria(Emp.class);
          Integer count = (Integer) criteria
                    .setProjection(Projections.rowCount()).uniqueResult();
     主要用了一个rowCount()函数。
0 0