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());
}