一、简介
Hibernate查询可以使用HQL NativeQuery,都要求对底层SQL语言数量掌握。对于比较复杂的SQL条件查询,如果程序员对SQL掌握不好,写起来会有一定困难。
Criteria 是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现、SQL语句如何编写,是HQL Native Query的替代。
Criteria 查询采用面向对象方式封装查询条件,对SQL 语句进行封装,采用对象的方式来组合各种查询条件,由Hibernate 自动产生SQL 查询语句,是Hibernate框架的核心查询对象。
二 使用入门
Hibernate5.2中已不推荐使用Criteria,而是使用基于JPA规范的CriteriaQuery查询,更适于扩展。
1 普通全表查询
// 组织Criteria的各个不同部分,是一个工厂类
CriteriaBuilder bd = session.getCriteriaBuilder();
//条件查询结果准备
CriteriaQuery<User> cq = bd.createQuery(User.class);
//查询的表:相当from
Root<User> root = cq.from(User.class);
//相当被查询字段
cq.select(root);//执行查询
List<User> list = session.creat