Hibernate的查询方案(应该熟悉各种查询的使用方法)
1、利用Session接口提供的load方法或者get方法
2、Hibernate提供的主要查询方法
1)Criteria Query(条件查询)的步骤:
(1)通过Session来创建条件查询对象Criteria
Criteria criteria = session.createCriteria(Course.class);
(2)构建条件---创建查询条件对象Criterion
Criterion criterion1 = Property.forName("id").ge(39);//通过Property来创建
Criterion criterion2 = Restrictions.le("cycle", 5); //通过Restrictions来创建
(3)查询对象关联条件
criteria.add(criterion1);
(4)执行条件查询
List<Course> courses = criteria.list();
2)HQL(Hibernate Qurey Language)
特点: 语法上与SQL类似; 完全面向对象的查询; 支持继承、多态、关联
(1) FROM子句
例如:查询所有的学生实例
Query query=session.createQuery("from Student");
query.list();
(2) SELECT子句
选择哪些对象和属性返回到结果集
A、SELECT语句后可以跟多个任意类型的属性,返回结果保存在Object类型的数组中
//A、B、C、都是查询学生的姓名和年龄
Query query=session.createQuery("select stu.name,stu.age from Student as stu");
List<Object[]> os=query.list();//返回的Object数组中有两个元素,第一个是姓名,第二个是年龄
B、SELECT语句后可以跟多个任意类型的属性,返回结果也可以保存在List中
Query query=session.createQuery ("select new List(stu.name,stu.age) from Student as stu");
List<List> lists=query.list();
C、SELECT语句后可以跟多个任意类型的属性,返回结果也可以是一个类型安全的POJO对象
Query query=session.createQuery
("select new Student(stu.name,stu.age) from Student as stu");
List<Student> stuList=query.list();//注意:Student类必须有Student(String,int)的构造方法
D、SELECT子句中可以使用聚集函数、数学操作符、连接
支持的聚集函数:avg、sum、min、max、count ….
(3) WHERE子句,限制返回结果集的范围
(4) ORDER BY子句,对返回结果集进行排序
3)Native SQL(原生SQL查询)
可移植性差:资源层如果采用了不同的数据库产品,需要修改代码---非不得已,不推荐使用
步骤一:调用Session接口上的createSQLQuery(String sql)方法,返回SQLQuery
步骤二:在SQLQuery对象上调用addEntity(Class pojoClass) //设置查询返回的实体
例如:
SQLQuery query =session.createSQLQuery(“select * from student limit 2,10”)
query.addEntity(Student.class);
List<Student> stuList=query.list();