Hibernate基本查询
Hibernate聚合函数和分组查询
Hibernate分页查询和批量更新
Hibernate中的命名查询
Hibernate基本查询
主要内容:
1. Query接口
2. HQL基本查询
3. Hibernate投影查询
4. where条件查询
Query接口
简介:Query是Hibernate专门用来执行HQL语句的查询接口,使用方式:
Query query = session.createQuery("HQL语句");
query.setParameter(...);
List resultList = query.list();
HQL基本查询
Hibernate Query Language(HQL):官方推荐的查询语言,它具有以下功能:
1. 条件查询
2. 支持投影查询
3. 分页查询
4. 连接查询
5. 分组查询
6. 子查询
7. 内置了一些聚集函数
8. 支持动态绑定参数
查询实体类的所有实例对象,方式:
Query query = session.createQuery("from Student");
List list = query.list();
或 Iterator it = query.iterate();
查询实体类的单个实例对象,方式:
Query query = session.createQuery("from Student");
Student stu = (Student)query.setMaxResults(1)
.uniqueResult();
投影查询:即查询类的某几个属性,通过用select语句只选择类的部分属性来实现的。方式
Query query = session.createQuery(“SELECT id,name FROM Student");
List list = query.list();
实例化投影查询结果:在对应实体类中添加初始化这些属性的构造方法即可.
指定别名:HQL可以指定要查询的实体类的别名
用关键字AS指定别名;也可以省略AS,直接加别名
String hql = "SELECT stu.id,stu.name FROM Student AS stu";
Query query = session.createQuery(hql);
List list = query.list();
where条件语句:查询符合条件的对象。
1. .号
2. 比较运算符
3. 范围运算符
4. 模式匹配符
5. 逻辑运算符
6. 用于集合的运算符
HQL提供了比较丰富的函数库,经常使用的如:
1. 字符串相关
2. 数字相关
3. 集合相关
4. 日期和时间
参数绑定:where子句中经常需要动态设置查询参数,Hibernate提供了两种参数绑定的方式。
1. 按参数名字绑定
2. 按参数位置绑定
distinct关键字:可以去掉结果中的重复值。
String hql = "SELECT distinct s.age FROM Student AS s";
order by关键字:对结果进行排序,默认为升序。
"FROM Student AS s ORDER BY s.id DESC"
Hibernate聚合函数和分组查询
主要内容:
1. 聚合函数
2. group by
3. having
聚合函数:查询结果作为Long返回
group by 对查询的数据,根据条件进行分组。
1.group by 经常跟聚集函数一起使用
“SELECT s.grade, COUNT(*) FROM Student AS s GROUP BY s.grade"
2.having关键字和group by关键字搭配使用,它对分组后的记录进行筛选
“SELECT s.grade FROM Student AS s GROUP BY s.grade
HAVING COUNT(s.id) > 20"
Hibernate分页查询和批量更新
主要内容:
1. 分页查询
2. 批量update和delete
分页查询:
Query接口提供以下两个用于分页显示查询结果的方法:
setFirstResult(int firstResult)
setMaxResult(int maxResults)
Query query = session.createQuery("FROM Student");
List list = query.setFirstResult(9)
.setMaxResult(10)
.list();
批量update和delete:
在Hibernate3以后,HQL新增了update与delete语句,可以直接使用HQL指定更新或删除。
String hql = "DELETE Student WHERE name LIKE :ln";
Query query = session.createQuery(hql);
int count = query.executeUpdate();
Hibernate命名查询
主要内容:
1. Hibernate命名查询的配置
2. Hibernate命名查询的应用
Hibernate命名查询的配置:
将HQL查询语句编写在关系映射文件时,在程序中通过Session的getNameQuery()方法获取该查询语句。
Hibernate命名查询的应用:
命名查询语句可以是HQL语句,也可以是本地SQL语句,程序代码也不区分命名查询语句的类型,一律通过Session的getNameQuery()方法来获得查询语句,具体应用如下:
Query query = session.getNamedQuery(“queryStudentByCondition”);
List list = query.list();