Criteria查询

1、Criteria表达式

  Criteria c=session.createCriteria(User.class);

  List result=c.list();

  Iterator it=result.iterator();

  while(it.hasNext()){

    User u=it.next();

    System.out.println("用户名:"+u.getName());

  }

   Criteria criteria = session.createCriteria(User.class);
      criteria.add(Restrictions.eq("name", "bob"));
      List result = criteria.list();
      Iterator it = result.iterator();
      while (it.hasNext()) {
          User user = (User) it.next();
          System.out.println("用户名:" + user.getName());
    }

    方法            说明

    Restrictions.eq()     对应SQL的等于(’=’)
    Restrictions.allEq()     使用Map,使用key/value进行多个相等的值的比对
    Restrictions.gt()     对应SQL的大于 (‘>’)
    Restrictions.ge()     对应SQL的大于等于 (‘>=’)
    Restrictions.lt()     对应SQL的小于 (‘<’)
    Restrictions.le()     对应SQL的小于等于 (‘<=’)
    Restrictions.between()   对应SQL的between子句
    Restrictions.like()     对应SQL的like子句
    Restrictions.in()     对应SQL的in子句
    Restrictions.and()      对应SQL的and
    Restrictions.or()     对应SQL的or
    Restrictions.not()     对应SQL的not

2、使用Example

  House house = new House();
  house.setPrice(new Double(2000));
  house.setFloorage(new Integer(40));

  Criteria criteria = session.createCriteria(House.class);
  criteria.add(Example.create(house));
  List results = criteria.list();
  Iterator it = results.iterator();
  while(it.hasNext()){
      House h= (House)it.next();
      System.out.println("标题:"+h.getTitle()+"  价格"+h.getPrice());
  }  

3、Criteria查询排序

  Criteria 查询不仅能组合出SQL中的where子句的功能,还可以组合出排序查询功能

  使用org.hibernate.criterion.Order对结果进行排序

  排序的方法为:asc() desc()

  Cirteria c=session.createCriteria(House.class);

  c.addOrder(Order.desc("price"));

  

4、Criteria查询实现分页

  Criteria的setMaxResult()方法可以限定查询返回数据的行数

  Criteria的setFirstResult()设定查询返回结果的第一行数据的位置

  Criteria c=session.createCriteria(Hose.class);

  c.setFistResult(3);

  c.setMaxResult(2);

  List result=c.list();

  Iterator it=result.iterator();

  while(it.hasNext()){

    Hose h=it.next();

    System.out.println("标题"+h.getTitle+"价格"+h.getPrice());

  }

  

原文地址:https://www.cnblogs.com/lanliying/p/3180680.html