没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Hibernate 中 HQL 语句
基础
默认数据库表和数据
检索类的所有对象
检索类的某几个属性
指定别名
条件子句
使用 过滤掉重复值
删除对象
更新对象值
查询计算属性值
使用函数
和 确定查询范围
和 确定查询集合
进行模糊查询
逻辑与
逻辑或
对结果进行排序
!" 对记录进行分组
# 关键字
聚集函数
进阶
查询类及其所有继承的类的实例
限制每次查询的返回对象数
绑定参数
在映射文件配置 语句
的嵌套子查询
嵌套子查询的概念
带有 $% 谓词的子查询
比较子查询
带有 &%' 或 & 的子查询
的多表查询
表之间的关联关系
表中的数据
修改持久化类
在映射文件中加入关联信息
左外连接
左外抓取连接
右外连接
内连接
抓取内连接
Hibernate 中 HQL 语句
本章介绍了 的几种主要检索方式: 检索方式、() 检索方式、*
检索方式。 是 ! ! 的缩写,是官方推荐的查询语言。()
是 !() 的缩写,是 提供的一个查询接口。 是一个轻量
级的框架,它允许使用原始 * 语句查询数据库。
1.1 HQL 基础
是 官方推荐的 检索方式,它使用类似 * 的查询语言,以面
向对象的方式从数据库中查询。可以使用 查询具有继承、多态和关联关系的数据。
在检索数据时应优先考虑使用 方式。
1.1.1 默认数据库表和数据
在讲解本章时,在没有特殊说明时,用到的数据库均为 + ,也就是在第 章建立的
数据库。+ 中添加了 个表:学生表 !、课程表 ! 和选课表 。
学生表 ! 中各字段的结构如图 , 所示,字段的中文含义在 )-- 列中。
图 ,学生表的数据结构
学生表 ! 中的数据如图 , 所示,没有特殊说明时,用到的均为这 条记录。
此 处 仍 然 使 用 在 第 章 建 立 的 .+ 项 目 , 但 是 这 里 新 建 了 一 个 包
,这个包存放本章中的所有代码。在 包中建立学生表对应
的持久化类 *!+#,代码如下。
图 ,学生表中的数据
package hibernate.ch06;
// 学生类
public class Student {
private Integer id; // 对象标识符
private Integer sno;// 学号
private String sname; // 姓名
private String ssex;// 性别
private String sdept; // 所在系别
private Integer sage; // 年龄
private String saddress; // 籍贯
…… //省略了所有的get/set访问器
}
课程表 ! 中的各个字段的结构如图 , 所示,字段的中文含义在 )-- 列中。
图 ,课程表的结构
课程表中的数据如图 , 所示,如果没有特殊说明,用到的均为这 条记录。
图 ,课程表的数据
在 中新建持久化类 )!+# 类,代码如下。
package hibernate.ch06;
// 课程类
public class Course {
private Integer id; // 对象标识符
private Integer cno;// 课程号
private String cname; // 课程名
private Integer Ccredit; // 学分
…… //省略了get/set访问器
}
选修表 ( 为 !,! 的缩写)的结构如图 , 所示,字段的中文含义在
)-- 列中。
图 ,选修表的结构
选修表中的数据如图 , 所示,没有特殊说明时,用到的均为这 条记录。
图 ,选修表的数据
在 中新建持久化类 *)+#,*)+# 的代码如下。
package hibernate.ch06;
// 选课类
public class SC implements java.io.Serializable {
private Integer id; // id
private Integer sno; // 学号
private Integer cno; // 课程号
private Integer grade; // 成绩
public SC() {
}
…… // 省略get/set访问器
}
后面的章节中将用这 个表和 个持久化类进行讲解。
1.1.2 检索类的所有对象
使用 语句可以检索出一个类的所有对象,如 语句“/-*!0表示检索
*! 类的所有对象。下面的程序检索学生类的所有对象。
Query query = session.createQuery("from Student"); // 创建Query对
象
List list = query.list(); // 执行查询
// 以下代码做显示用,以后不再写出来
Iterator it = list.iterator();
while (it.hasNext()) {
Student stu = (Student) it.next();
System.out.println("id" + stu.getId());
System.out.println("name" + stu.getSname());
System.out.println("\n");
}
1111!23以 查询语句为参数,生成一个查询对象。本例中的
语句为“/-*!0,这是 /- 子句,格式如下。
/-类名
其中,类名可以为类的全限定名,如:
/-*!
使用自动引入功能(!-"),会自动寻找需要的类,所以不推荐使用
类的全限定名。注意,类名区分大小写,如果写成 /-!,将会抛出以下异常。
+# %)4/5!67 88! 2 -7
88*!3
1111 关键字不区分大小写,59:;、/- 和 5- 是一样的。
调用 <!23时,真正开始执行 查询语句,并把查询的结果放在 中。
本例中查询的是 *! 类中的所有属性,如果查询 *! 类中的某一个或某几个属
性,如查询所有学生的姓名和所在系,需要用到属性查询。
1.1.3 检索类的某几个属性
与 * 语句类似, 语句可以检索类的某一个或者某几个属性。以下代码查询所有
学生的姓名和所在系。
// 创建Query对象
Query query = session.createQuery("select
Student.sname,Student.sdept from Student");
List list = query.list(); // 执行查询
// 以下代码显示查询的信息
Iterator it = list.iterator();
while (it.hasNext()) {
Object[] stu = (Object[]) it.next();
System.out.println("id" + stu[0]);
System.out.println("name" + stu[1]);
System.out.println("\n");
}
1111属性查询使用 关键字,属性查询的格式如下。
属性 =属性 =>/-类名
1111属性前可以加上类名加以限定,如:
属性 =属性 =>/-类名
但一般没有必要。
属性查询区分大小写,上面的代码中如果写成:
*%&;6=*"/-*!
将抛出异常,提示找不到属性 *%&;6 和属性 *"。
1111查询结果将只显示查询的属性列。
1111属性查询的结果,对于用 ?23获得的每条记录,可以存储在 :+@A数组中,
以便进行存取。
1.1.4 指定别名
在查询时,可以用关键字 指定查询的别名,指定别名可以简化查询,有时必需指定
剩余25页未读,继续阅读
资源评论
- hoarhoar2014-01-10很好,谢谢提供,顶之。
- 特利迦2014-08-08不错,写到东西了
- cailu53828052013-10-27学到了很多,巩固了知识点
luanluande1989
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功