Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例

上传人:杨**** 文档编号:52145122 上传时间:2018-08-18 格式:PPT 页数:28 大小:1.36MB
返回 下载 相关 举报
Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例_第1页
第1页 / 共28页
Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例_第2页
第2页 / 共28页
Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例_第3页
第3页 / 共28页
Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例_第4页
第4页 / 共28页
Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例》由会员分享,可在线阅读,更多相关《Java EE 课程ppt课件 第12章 Hibernate与Struts 2整合应用案例(28页珍藏版)》请在金锄头文库上搜索。

1、12.1 Hibernate与Struts 2系统的整合12.2 添加Hibernate及开发持久层12.3 功能实现1DAO技术 以“图书管理系统”为例:“图书管理”功能的数据访问模块,里面的操作方法有 addBook(追加图书)、deleteBook(图书删除)、updateBook(图书修改)、 selectBook(图书查询)等,对于不同数据库其实现的细节是不同的。因此,不太 可能针对每种类型的数据库做一个通用的对象来实现这些操作。这时候,就可以定 义一个用户数据访问对象的接口BookDao,提供抽象的方法。不同类型数据库的用 户访问对象只要实现这个接口就可以了,如图12.1所示。2整

2、合原理 读者可形象地理解为:HibernateJavaBeanJDBC。同时,Struts 2的 Action模块不再直接执行JDBC操作,而是通过DAO接口的方式间接地访问数据库 。整合进Hibernate的系统与原来仅使用Struts 2的系统,两者在结构上的区别与联 系,如图12.2所示。1修改原项目启动MyEclipse 2014,导入项目bookManage,删除原程序org.dao包下全部内容,删除org.db、org.model包及其中的全部内容,另新创建org.vo和org.util两个包。2添加Hibernate框架右击项目名,选择菜单“MyEclipse”“Project

3、Facets Capabilities”“Install Hibernate Facet”,启动向导。按照向导指引逐步添加Hibernate框架。具体操作见【实例8.1】的第3步,略。3Hibernate反向工程接下来就可以利用反向工程生成数据库表对应的POJO类及映射文件了。打开“MyEclipse Database Explorer”视图,打开sqlsrv连接,依次选择展开“MBOOK”“dbo”“TABLE”,这时MBOOK数据库中的表就展现出来了,选中这些表,右击选择“Hibernate Reverse Engineering”具体操作见【实例8.1】的第4步,略。经过以上步骤,此时的

4、项目工程目录树呈现如图12.3所示的状态。在一般情况下,生成的POJO类与映射文件大致符合我们的要求,但有时候根 据自己的需要也要进行一些小小的改动。例如,本例的Login.hbm.xml文件中主键 的生成策略是“assigned”,而该主键在数据库中是自增的,故需要改成“identity”。 下面简要列举这几个文件的代码,其中改动的部分加黑标出。 Login.java代码为: package org.vo; public class Login implements java.io.Serializable / Fields private Integer id;/ 用户ID private

5、 String name;/ 用户名 private String password;/ 密码 private Boolean role;/ 角色,true为管理员,false为读者 / Constructors/ 构造方法 / Property accessors / 省略上面属性的get和set方法 Login.hbm.xml文件代码为: Student.java代码为: package org.vo; import java.util.Date; public class Student implements java.io.Serializable private String rea

6、derId;/ 借书证号 private String name;/ 姓名 private Boolean sex;/ 性别 private Date born;/ 出生时间 private String spec;/ 专业名 private Integer num;/ 借书量 private byte photo;/ 照片 / Constructors/ 构造方法 public Student(String readerId, String name, Boolean sex, Date born, String spec, Integer num) /* full constructor

7、*/ public Student(String readerId, String name, Boolean sex, Date born, String spec, Integer num, byte photo) / Property accessors / 省略上面属性的get和set方法 Student.hbm.xml代码为: Book.java的代码为。 Book.hbm.xml文件代码为: Lend.java代码为。Lend.hbm.xml代码为: 4编写DAO接口及实现类(1)登录功能用DAO。 “登录”的DAO接口LoginDao.java代码为: package org.d

8、ao; import org.vo.Login; public interface LoginDao public Login checkLogin(String name,String password); / 方法:验证用户信息 LoginDao的实现类LoginDaoImpl.java代码为。(2)与“图书”相关操作用DAO。“图书”的DAO接口BookDao.java代码为: package org.dao; import org.vo.Book; public interface BookDao public void addBook(Book book);/ 方法: 追加图书信息

9、public void deleteBook(String ISBN);/ 方法:删除图书 信息 public void updateBook(Book book);/ 方法:修改图书 信息 public Book selectBook(String ISBN);/ 方法:查询图书 信息 BookDao的实现类BookDaoImpl.java代码为。(3)与“读者”相关的DAO。“读者”的DAO接口StudentDao.java代码为: package org.dao; import org.vo.Student; public interface StudentDao public Stud

10、ent selectStudent(String readerId); / 方法:查询读者信息 StudentDao接口的实现类StudentDaoImpl.java代码为。(4)与“借书”相关操作用DAO。 “借书”接口LendDao.java代码为: package org.dao; import java.util.List; import org.vo.Book; import org.vo.Lend; import org.vo.Student; public interface LendDao / 方法:分页查询指定借书证号的读者所借图书的信息 public List select

11、Book(String readerId,int pageNow,int pageSize); / 方法:查询指定借书证号的读者所借图书的总数 public int selectBookSize(String readerId); / 方法:借书 public void addLend(Lend lend,Book book,Student student); / 方法:根据图书ID查询Lend信息 public Lend selectByBookId(String bookId); / 方法:根据图书ISBN查询Lend信息 public Lend selectByBookISBN(Stri

12、ng ISBN); LendDao接口的实现类LendDaoImpl.java代码为。12.3.1 “登录”功能的实现修改Action类LoginAction.java实现为。其中,加黑部分代码为要修改的内容,可见这里只是在原项目的基础上,改用持久层已开发好的LoginDao接口中的checkLogin()方法来实现登录验证功能的。LoginDao接口对应的实现类为LoginDaoImpl,程序中只须实例化创建它的对象即可。要“查询已借图书”,首先要进入到“借书”功能的页面,如图12.4所示,界面实 现代码见7.3.2节的“lend.jsp”。在输入借书证号后,单击“查询”按钮,查询出该读者的

13、所有借书信息,如输 入“131101”,出现如图12.5所示的界面。该功能的页面提交借书证号代码为(完整代码见7.3.2节search.jsp):内容选择借书证号:提交到了名为“selectBook”的Action,相应地在LendAction.java中实现的方法 是selectAllLend(),其代码为。 在第7章中,查询出来的结果在页面中遍历后,利用“lend.java”模型来输出, 代码为(完整代码见7.3.2节lendbookinfo.jsp):图书IDISBN书名出版社价格 借书时间由于在第7章中,我们定义了“Lend.java”的模型类,而本例中“Lend.java”是以 PO

14、JO类存在,与表一一对应的,故在遍历我们取出的List时,没有一个模型与其 每条记录对应。这里有两种处理方法,一种是再定义一个模型类,里面的属性如 同在第7章例子中的“Lend.java”,这样就可以采用第7章的老方法来遍历输出;第 二种方法更简单,也是本例所采用的方法,只要把上面的代码修改为:图书IDISBN书名出版社价格 借书时间在某读者查询过已借的图书信息后,就可以继续借书了,输入正确的ISBN及 图书ID后,单击“借书”按钮,即可完成借书操作,如图12.6所示。“借书”功能在LendAction.java中的方法实现为。图书管理的界面如图12.7所示,页面实现代码与7.4.1节中给出的

15、 “bookmanage.jsp”相同。1图书追加图书追加是向数据库中添加数据,页面的提交代码为:在提交标签中定义了“method”属性,指定了该请求应用的Action类中的方法为“addBook”,故当“图书追加”按钮提交给“book.action”时,在指定的Action类中就可以找到相应的方法进行处理。BookActon.java中相应的处理方法的代码为。2图书删除 图书删除也是提交给“book.action”,在提交标签中定义使用的方法:直接在BookAction.java中编写方法即可: public String deleteBook() throws Exception /判断要

16、删除的ISBN是否存在,即是否存在该书籍 if(book.getISBN()=null|book.getISBN().equals(“) this.setMessage(“请输入ISBN号“); return SUCCESS; Book bo=bookDao.selectBook(book.getISBN(); if(bo=null) /首先判断是否存在该图书 this.setMessage(“要删除的图书不存在!“); return SUCCESS; else if(new LendDaoImpl().selectByBookISBN(book.getISBN()!=null)/+ this.setMessage(“该图书已经被借出,故不能删除图书信息!“); return SUCCESS; boo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > Java

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号