下面继续讲hibernate的核心类(接口)。
Query接口:
前面提到session的两个查询方法都是用主键进行查找的,如果我们想通过用户名或者邮箱等数据进行查找则需要更强大的Query接口。
操作语句:
Query query = (Query) session.createQuery("from Employee where id = 1");
这里注意,中间的查询语句Employee大写因为这里用的不是表而是pojo对象,后面的条件id可以指定是字段名或者是对象属性名(当然最好用属性名),然后通过list方法获取结果,list会自动将结果封装成一个pojo对象。
Critera接口:
这个接口也能够实现面向对象的查询功能,但不是官方推荐的(Query用的多)。
这是一个面向对象的查询接口,体现在查询条件的设置完全用的是方法,如下:
Criteria cr = session.createCriteria(Employee.class).setMaxResults(2).addOrder(Order.desc("id"));
List<Employee> list = cr.list();
有点类似JQuery的链式编程,查询条件都放在方法里面。当然这个方法用的很少,官方也不推荐,主要还是用Query.