Creteria接口是Hibernate提供的一个面向对象的查询条件接口。
一个单独查询就是Criterion接口的一个实例,用于限制Criteria对象的查询,在Hibernate中Criterion对象的创建通常是Restrictions工厂类完成的,HQL(Hibernate Query Language) 和 Criteria 都是面向对象的查询,只不过Criteria更面向对象,Criteria和Restrictions这个类连用来实现条件查询
@Test
public void testFindAll() {
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
//1.得到一个Session
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();
//2.通过Session对象获得Criteria
Criteria criteria=session.createCriteria(UserTest1.class);
//3.使用Restrictions的eq方法设定查询条件为name="李白"
SimpleExpression retrictions= Restrictions.eq("name", "李白");
//4.向criteria添加查询条件
criteria.add(retrictions);
List<UserTest1> list=criteria.list();
for(UserTest1 u:list) {
System.out.println(u.getId()+u.getName()+u.getAge()+u.getGender());
}
transaction.commit();
session.close();
sessionFactory.close();
}
Criteria常用查询方法
1.Criteria add(Criteria criterion) 用于设置查询条件,参数为Criterion对象
//3.使用Restrictions的eq方法设定查询条件为name="李白"
SimpleExpression retrictions= Restrictions.eq("name", "李红");
//4.向criteria添加查询条件
criteria.add(retrictions);
2.Criteria addOrder(Order order) 用于设置结果集的排列规则,其参数为一个Order对象实例
desc是降序,asc是升序
criteria.addOrder(Order.desc("name")).addOrder(Order.desc("id"));
3.Criteria creatCriteria(String associationPath) 用于创建一个新的Criteria,这个方法用于执行符合查询时设置查询条件。
4.List list 用于执行数据库查询,返回查询结果
List<UserTest1> list=criteria.list();
4.Criteria setFirstResult(int firstResult) 设置获取第一个记录的位置,这个位置从0开始
criteria.setFirstResult(3);
5.Object uniqueResult() 这个方法用于得到唯一结果对象实例。在确保最多只有一个实例时可以使用
criteria.uniqueResult();