Hibernate基本查询

来源:互联网 发布:科立讯写频软件 编辑:程序博客网 时间:2024/05/01 23:00

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();
0 0
原创粉丝点击