----------------siwuxie095
(一)Query
1、使用 Query 对象执行查询操作,不需要写 sql 语句,但是要写 hql 语句
(1)hql:即 Hibernate Query Language,它是 Hibernate 提供的查询语言
(2)hql 语句和 sql 语句很相似
(3)hql 和 sql 语句的区别:
1)使用sql 语句操作的是表和表中字段
2)使用hql 语句操作的是实体类和属性
2、"查询所有记录"的hql 语句
from 实体类名
3、实现过程
(1)创建Query 对象
(2)调用Query 对象的方法得到结果
//(1) 创建 Query 对象
//
//调用 session 的 createQuery() 方法,
//参数是 hql 语句,返回值是 Query 类型,
//创建以接收
Query query=session.createQuery("from User");
//(2) 调用 Query 对象的方法得到结果
//
//调用 query 的 list() 方法得到结果,
//返回值是 List 类型,创建以接收,并
//指定泛型为 User
List<User> list=query.list();
for (User user : list) {
System.out.println(user);
}
(二)Criteria
1、使用 Criteria 对象执行查询操作,不需要写语句,直接调用方法实现
2、实现过程
(1)创建Criteria 对象
(2)调用Criteria 对象的方法得到结果
//(1) 创建 Criteria 对象
//
//调用 session 的 createCriteria() 方法,
//参数是实体类的 class,返回值是 Criteria
//类型,创建以接收
Criteria criteria=session.createCriteria(User.class);
//(2) 调用 Criteria 对象的方法得到结果
//
//调用 criteria 的 list() 方法得到结果,
//返回值是 List 类型,创建以接收,并指定
//泛型为 User
List<User> list=criteria.list();
for (User user : list) {
System.out.println(user);
}
(三)SQLQuery
1、使用SQLQuery 对象执行查询操作,可以调用底层 sql 语句实现
2、实现过程
(1)创建SQLQuery 对象
(2)调用SQLQuery 对象的方法得到结果
//(1) 创建 SQLQuery 对象
//
//调用 session 的 createCriteria() 方法,
//参数是 sql 语句,返回值是 SQLQuery 类型,
//创建以接收
SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
//(2) 调用 SQLQuery 对象的方法得到结果
//
//调用 sqlQuery 的 list() 方法得到结果,
//返回值是 List 类型,创建以接收
//
//注意:此时返回的 List 的每部分都是一
//个数组,而不是 User 对象,所以指定泛型
//为 Object[]
List<Object[]> list=sqlQuery.list();
for (Object[] objects : list) {
//Arrays.toString() 将数组作为字符串输出
System.out.println(Arrays.toString(objects));
}
修改:让返回的List 中每部分都是一个 User 对象
SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
//让返回的 List 中每部分都是一个 User 对象
//
//调用 sqlQuery 的 addEntity() 方法,参数
//是实体类的 class,设置要将数据放到哪个实
//体类的对象中
sqlQuery.addEntity(User.class);
List<User> list=sqlQuery.list();
for (User user : list) {
System.out.println(user);
}
【made by siwuxie095】