第14章 Hibernate高级映射和数据检索【首页】杜老师


0. 创建项目

(1) 创建项目01JavaWeb14, 01学号 web project, Java EE 5.0 复制mysql-connector-java-5.1.22-bin.jar共1个jar包到WEB-INF\lib

(2) src创建hibernate.cfg.xml

(3) src创建cn.duzhaojiang.hibernate包,创建HibernateSessionFactory.java

(4) 创建首页index.jsp

本章重点

1. 关联关系映射

1.1 多对一关系映射

知识点:文件名 src/hibernate.cfg.xml
主要内容:根节点,根节点之子节点只有一个,主要内容定义如下。

(1) 创建数据表、数据(在mysql中执行)

(2) 创建学生[多]、班级[一]实体类

在cn.duzhaojiang.model包,创建学生实体类[Student01.java]

在cn.duzhaojiang.model包,创建班级实体类[Classes01.java]

(3) 创建对象关系映射文件

在cn.duzhaojiang.model包,创建对象关系映射文件Student01.hbm.xml

在cn.duzhaojiang.model包,创建对象关系映射文件Classes01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加
<mapping resource="cn/duzhaojiang/model/Classes01.hbm.xml" />
<mapping resource="cn/duzhaojiang/model/Student01.hbm.xml" />

(5) 在cn.duzhaojiang.test下创建测试类[QueryTest_01.java]并测试

在WebRoot下创建[装载学号为3的学生对象]网页[QueryTest_01.jsp]并部署web测试

(6) 在cn.duzhaojiang.test下创建测试类[SaveTest_01.java]并测试

1.2 一对多关系映射

(1) 创建班级[一]、学生[多]实体类

在cn.duzhaojiang.model包,创建班级实体类[Classes01_.java]

在cn.duzhaojiang.model包,创建学生实体类[Student01_.java]

(2) 创建对象关系映射文件

在cn.duzhaojiang.model包,创建对象关系映射文件Classes01_.hbm.xml

在cn.duzhaojiang.model包,创建对象关系映射文件Student01_.hbm.xml

(3) 在src\hibernate.cfg.xml中添加
<mapping resource="cn/duzhaojiang/model/Classes01_.hbm.xml" />
<mapping resource="cn/duzhaojiang/model/Student01_.hbm.xml" />

(4) 在cn.duzhaojiang.test下创建测试类[QueryTest2_01.java]并测试

在WebRoot下创建[班级编号为2的学生]网页[QueryTest2_01.jsp]并部署web测试

(5) 在WebRoot下创建[所有学生]网页[QueryTest3_01.jsp]并部署web测试

1.3 一对一关系映射

(1) 创建数据表、数据(在mysql中执行)

(2) 创建人[一]、身份证[一]实体类

在cn.duzhaojiang.model包,创建人实体类[Person01.java]

在cn.duzhaojiang.model包,创建身份证实体类[Card01.java]

(3) 创建对象关系映射文件

在cn.duzhaojiang.model包,创建对象关系映射文件Person01.hbm.xml

在cn.duzhaojiang.model包,创建对象关系映射文件Card01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加
<mapping resource="cn/duzhaojiang/model/Card01.hbm.xml" />
<mapping resource="cn/duzhaojiang/model/Person01.hbm.xml" />

(5) 在cn.duzhaojiang.test下创建测试类[SavePersonTest_01.java]并测试

(6) 在cn.duzhaojiang.test下创建测试类[QueryPersonTest_01.java]并测试

在WebRoot下创建[]网页[QueryPersonTest_01.jsp]并部署web测试

2. 标准查询API

2.0 定义数据表、数据、model、映射文件hbm.xml

(1) 在MySql中执行下列代码创建水果数据表[fruit]及其数据

(2) 在cn.duzhaojiang.model下创建bean[Fruit01.java]

(3) 在cn.duzhaojiang.model下创建[Fruit01.java]映射文件Fruit01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加 <mapping resource="cn/duzhaojiang/model/Fruit01.hbm.xml" />

2.1 查询所有记录

(1) 在cn.duzhaojiang.test下创建测试类[TestCriteria1_01.java]并测试

(2) 在WebRoot下创建[查询所有水果]网页TestCriteria1_01.jsp并部署web测试

2.2 设置最大记录数

(1) 在cn.duzhaojiang.test下创建测试类[TestCriteria2_01.java]并测试

(2) 在WebRoot下创建[查询(设置从第2条开始,最大记录数为2)水果]网页TestCriteria2_01.jsp并部署web测试

2.3 按条件查询

(1) 在cn.duzhaojiang.test下创建测试类[TestCriteria3_01.java]并测试

(2) 在WebRoot下创建[查询(名称:苹果)水果]网页TestCriteria3_01.jsp并部署web测试

2.4 使用通配符完成模糊查询

(1) 在cn.duzhaojiang.test下创建测试类[TestCriteria4_01.java]并测试

(2) 在WebRoot下创建[查询(名称含有:果)水果]网页TestCriteria4_01.jsp并部署web测试

2.5 使用MatchMode完成模糊查询

(1) 在cn.duzhaojiang.test下创建测试类[TestCriteria5_01.java]并测试

(2) 在WebRoot下创建[查询(名称:西字开始)水果]网页TestCriteria5_01.jsp并部署web测试

2.6 对查询结果进行排序

(1) 在cn.duzhaojiang.test下创建测试类[TestCriteria6_01.java]并测试

(2) 在WebRoot下创建[查询(排序,编号降序)水果]网页TestCriteria6_01.jsp并部署web测试

3. HQL基础查询(职员信息查询)

3.0 定义数据表、数据、model、映射文件hbm.xml

(1) 在MySql中执行下列代码创建员工数据表[employee]及其数据

(2) 在cn.duzhaojiang.model下创建[公司职工]bean[Employee01.java]

(3) 在cn.duzhaojiang.model下创建[Employee01.java]映射文件Employee01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加 <mapping resource="cn/duzhaojiang/model/Employee01.hbm.xml" />

3.1 使用HQL查询所有记录

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL1_01.java]并测试

(2) 在WebRoot下创建[查询所有员工]网页TestHQL1_01.jsp并部署web测试

3.2 使用Select子句返回指定属性信息

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL2_01.java]并测试

(2) 在WebRoot下创建[查询所有员工编号、姓名、入职时间]网页TestHQL2_01.jsp并部署web测试

3.3 使用as关键字给实体类起一个别名

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL3_01.java]并测试

(2) 在WebRoot下创建[使用别名仅查询职员编号、姓名、入职时间]网页TestHQL3_01.jsp并部署web测试

3.4 使使用Where子句指定查询条件

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL4_01.java]并测试

(2) 在WebRoot下创建[条件查询:编号 大于 2 小于 5]网页TestHQL4_01.jsp并部署web测试

3.5 指定查询参数来完成查询

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL5_01.java]并测试

(2) 在WebRoot下创建[查询所有员工]网页TestHQL5_01.jsp并部署web测试

3.6 指定查询起始位置和查询最大记录数

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL6_01.java]并测试

(2) 在WebRoot下创建[查询所有员工(从第1条开始的3条记录)]网页TestHQL6_01.jsp并部署web测试

4. HQL高级查询(职员信息查询)

4.1 使用HQL对查询结果进行排序

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL7_01.java]并测试

(2) 在WebRoot下创建[查询所有员工]网页TestHQL7_01.jsp并部署web测试

4.2 使用HQL对查询结果进行分组

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL8_01.java]并测试

(2) 在WebRoot下创建[查询所有员工]网页TestHQL8_01.jsp并部署web测试

4.3 使用HQL执行数据库内置函数

(1) 在cn.duzhaojiang.test下创建测试类[TestHQL9_01.java]并测试

(2) 在WebRoot下创建[查询所有员工]网页TestHQL9_01.jsp并部署web测试

实训 模拟人才市场查询系统

实训0 定义数据表、数据、model、映射文件hbm.xml

(1) 在MySql中执行下列代码创建水果数据表[fruit]及其数据

(2) 在cn.duzhaojiang.model下创建bean[Talent01.java]

(3) 在cn.duzhaojiang.model下创建[Talent01.java]映射文件Talent01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加 <mapping resource="cn/duzhaojiang/model/Talent01.hbm.xml" />

实训1 创建Java Application测试类

(1) 在cn.duzhaojiang.test下创建类[TalentsMarketOper_01.java]

(2) 在cn.duzhaojiang.test下创建测试类[TalentsMarketMain_01.java]并测试

实训2 创建Java Web网页

(1) 在WebRoot下创建[查询所有最新人才]网页TestTalents1_01.jsp并部署web测试

(2) 在WebRoot下创建[查询在职人员]网页TestTalents2_01.jsp并部署web测试

(3) 在WebRoot下创建[查询待业人员]网页TestTalents3_01.jsp并部署web测试

上机题(5-8) 指导老师表与学生表(1:m关系,1个指导老师带多个学生,1个学生只由1个老师指导) 标准查询

0. 创建数据表、数据、实体类、对象关系映射文件

(1) 创建数据表、数据(在mysql中执行)

(2) 创建指导老师、学生实体类

在cn.duzhaojiang.model包,创建指导老师实体类[Teacher01.java]

在cn.duzhaojiang.model包,创建学生实体类[Stu01.java]

(3) 创建对象关系映射文件

在cn.duzhaojiang.model包,创建对象关系映射文件Teacher01.hbm.xml

在cn.duzhaojiang.model包,创建对象关系映射文件Stu01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加
<mapping resource="cn/duzhaojiang/model/Teacher01.hbm.xml" />
<mapping resource="cn/duzhaojiang/model/Stu01.hbm.xml" />

1. 查询[学生学号、姓名、指导老师姓名]信息

(1) 在cn.duzhaojiang.test 创建[查询学生学号、姓名、指导老师姓名]测试类TestStuTeacher_01.java并测试

(2) 在WebRoot创建[查询学生学号、姓名、指导老师姓名]页面文件TestStuTeacher_01.jsp并部署测试

2. 查询[所有老师]信息

(1) 在cn.duzhaojiang.test 创建[所有老师]测试类TestStuTeacher2_01.java并测试

(2) 在WebRoot创建[所有老师]页面文件TestStuTeacher2_01.jsp并部署测试

3. 查询[谢老师指导的学生信息]

(1) 在cn.duzhaojiang.test 创建[查询谢老师指导的学生信息]测试类TestStuTeacher3_01.java并测试

(2) 在WebRoot创建[谢老师指导的学生列表]页面文件TestStuTeacher3_01.jsp并部署测试

4. 查询[年龄大于50的男老师]信息

(1) 在cn.duzhaojiang.test 创建[查询年龄大于50的男老师]测试类TestStuTeacher4_01.java并测试

(2) 在WebRoot创建[年龄大于50的男老师]页面文件TestStuTeacher4_01.jsp并部署测试

5. 查询[2005年入学的学生]信息

(1) 在cn.duzhaojiang.test 创建[ ]测试类TestStuTeacher5_01.java并测试

(2) 在WebRoot创建[ 表]页面文件TestStuTeacher5_01.jsp并部署测试

上机题(9-10) 商品信息表 HQL查询

0. 创建数据表、数据、实体类、对象关系映射文件

(1) 创建数据表、数据(在mysql中执行)

(2) 创建实体类

在cn.duzhaojiang.model包,创建实体类Commodity01.java

(3) 创建Commodity01的对象关系映射文件

在cn.duzhaojiang.model包,Commodity01的对象关系映射文件Commodity01.hbm.xml

(4) 在src\hibernate.cfg.xml中添加 <mapping resource="cn/duzhaojiang/model/Commodity01.hbm.xml" />

1. 查询【价格>100 且<1000 商品信息】

(1) 在cn.duzhaojiang.test 创建[查询价格>100 且<1000 商品]测试类TestCommodity_01.java并署测

(2) 在WebRoot创建[ 表]页面文件TestCommodity_01.jsp并部署测试

2. 查询【按销售数量降序排序的商品信息】

(1) 在cn.duzhaojiang.test 创建[按销售数量降序排序的商品信息]测试类TestCommodity2_01.java并署测

(2) 在WebRoot创建[按销售数量降序排序的商品信息]页面文件TestCommodity2_01.jsp并部署测试


返回章节目录