HQL语句
来源:互联网 发布:sql select 创建表 编辑:程序博客网 时间:2024/05/14 06:22
HQL查询
HQL是Hibernate Query Language的缩写,HQL的语法很像SQL的语法,但是HQL是一种面向对象的查询语言。
因此,SQL的操作对象的数据表和列等数据对象,而HQL的操作对象是类、实例、属性等。
HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征。
HQL查询依赖Query类,每个Query实例对应一个查询对象。
1、通常,set xxx()方法的返回值都是void,但是hibernate Query的set XXX()方法的返回值是Query本书,
因此,程序通过Session创建Query后,直接多次调用set XXX()方法为HQL语句的参数赋值,再直接调用list()
方法返回查询后的全部结果即可。
Query还包含两个方法:
setFirstResult(int firstResult),设置返回的结果集从第几条记录开始
setMaxResult(int maxResult),设置本次查询返回的结果数。
这两个方法用于实现Hibernate分页。
2、HQL查询的聚集函数
avg —— 计算属性的平均值
count —— 统计选择对象的数量
max —— 统计属性值的最大值
min —— 统计属性值的最小值
sum —— 计算属性值的总和。
Example:
select count (*) from Person 查询Person类中实例的个数
select max (p.age) from Person as p 查询Person类中年龄的最大值
3、HQL查询的where子句
where子句用于筛选选中的结果,缩小选择的范围。如果没有为持久化实例命名别名,
可以直接使用属性名引用。
如: from Person where name like ' tom% ' 等同于 from Person as p where p.name like " tom% "
返回name属性以tom开头的实例。
4、表达式
HQL的功能非常丰富,where子句后支持的运算符异常丰富,不近包括SQL的运算符,还包括EJB-QL的运算符
where子句中允许使用大部分SQL支持的表达式:
数学运算符: +、-、*、/等
二进制比较运算符:=、 >=、 <=、 <>、!=、like等
逻辑运算符:and、or 、not等
in、not in 、 between 、 is null 、 is not null 、 is empty 、 member of 和not member of等。
简单的case、 case....when..then...else...end和case、case when.....then....else....end等
字符串连接符value1 || value2 或使用字符串连接函数 concat(value1,value2)。
时间操作函数 current_date()、 current_time()、current_timestamp()、second()、minute()、hour()、
day()、month()、year()等。
HQL还支持EJB_QL3.0所支持的函数或操作substring()、trim()、lower()、upper()、length()、
locate()、abs()、sqrt()、bit_length()、coalesce()和nullif()等
Example:
in 与 between....and的用法:
from Person p where p.name between ' A 'and ' B '
from Person p where p.name in (”abc“,"tom","joan")
5、 order by 子句
查询返回的列表(list)可以根据类或组件属性的任何属性值进行排序。
Example:
from Person as p order by p.name,p.age 根据人的名字和年龄升序排列
from Person as p order by p . age desc 根据人的年龄倒序排列
默认情况下是升序即asc,用desc则是倒序排列。
- HQL语句
- HQL语句
- hql语句
- HQL语句
- HQL语句
- hql语句
- HQL语句
- hql 语句
- HQL语句
- hql语句
- HQL语句
- hql语句
- hql语句
- hql语句
- HQL语句
- HQL语句
- HQL语句
- HQL语句
- 《Android内核剖析》笔记 第5章 进程间通信核心框架Binder
- Wiki OI 1039 数的划分
- 如何应用autosizing属性使iOS应用程序界面适配iPhone5
- 在eclipse中集成java反编译工具
- linux 下 命令行 mail 发邮件方法
- HQL语句
- 利用黑窗口发送邮件
- 走进WebKit
- 通过代码切换组织
- hdu 3074 Multiply game(线段树模版)
- 读取图片 优化android内存
- hibernate多表关联配置
- DirectBuffer及内存泄漏
- 数位DP+二分搜索——HDU3943 K-th Nya Number