




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安徽工业大学毕业论文课题名称 图书管理系统学 院 计算机学院专业班级 计算机科学与技术111班姓 名 蔡忠旭学 号 119074001指导老师 边琼芳安徽工业大学毕业设计(论文)任务书课题名称 图书管理系统学 院 计算机科学与技术学院专业班级 计算机科学与技术111班姓 名蔡忠旭学 号 119074001毕业设计(论文)的主要内容及要求:1) 学习并掌握JavaMyEclipse开发工具,MySQL数据库技术等相关知识。2) 针对实际的图书馆现状,设计与开发图书管理系统,能够实现图书管理功能、借阅书籍功能、读者登记功能、信息发布功能和读者查询等功能。3)设计要求:结合社会实际需求,设计并实现本系统。通过设计和实现本系统,对大学所学知识有一个整体的了解和汇总,为马上步入社会奠定基础、搭建理论与实践之桥梁。4)学习毕业论文的写作方法,论文篇幅为1.2-2万字。5)查阅文献资料不少于8篇,其中英文资料不少于2篇。并完成相关英文资料大于等于5000字的翻译。6)提交主要源程序清单。7)软件结构良好,具备一定的可维护性和可靠性。8)能力要求:具备勤奋认真的学习态度和较强的上进心,具备一定的中英文文献检索和阅读能力,并掌握软件开发的基本方法和面向对象程序设计的基本思想。 指导教师签字: 摘 要图书管理系统软件的设计与实现不管对个人还是对社会都有重大的意义。在个人方面,通过软件的开发和设计,可以节省大量的时间,同时提高工作效率和准确性;在企业方面,管理软件的开发可以极大的提高企业管理工作的效率,数据长久的有效性。图书管理系统基于Web应用程序广泛采用的B/S结构设计和开发,使用Java编程语言结合MySql数据库管理系统,通过Tomcat-7.0.34服务器实现了图书管理系统的部署,具体的功能有读者用户查看界面,管理员操作以及对书籍的管理等功能。本问论述了图书管理系统的开发过程:从对需求的分析到对系统功能的实现,还有相关数据库的设计和前后台的页面的布局等。关键词:图书馆;Springmvc;B/S;JavaAbstractBooks management system management system software design and implementation of whether for personal or has significant meaning to the society. On a personal level, through the development and design software, can save a lot of time, at the same time, improve the work efficiency and accuracy; In the aspect of enterprise, the development of management software can greatly improve the efficiency of enterprise management, the effectiveness of the data for a long time.Books management system management system based on Web application widely adopted B/S structure design and development, using the Java programming language combined with MySQL database management system, realized the books management system management system through the Tomcat - 7.0.34 server deployment, specific features reader users to view interface, administrators, operation and management of the books, and other functions.Ask this books management system management system is discussed, and the development process: from the analysis of the demand to the realization of the system function, and the design of the relational database and Taiwan before and after the page layout, etc.Key Words:Library; Springmvc; B/S; Java目录摘 要3Abstract41课题简介71.1 背景及意义71.2 系统开发的目的71.2.1 提高管理质量与效率71.2.2 实现网上的动态管理82 可行性研究92.1技术可行性92.2 经济可行性92.3 操作可行性102.4 法律可行性103 需求分析113.1 系统需求分析113.2 系统结构图113.2.1用户结构图123.2.2管理员结构图124 系统相关知识和关键技术介绍144.1系统通用结构144.2 Java编程语言144.2.1 SpringMvc 框架154.2.2 Spring 框架164.2.3 Hibernate框架174.3开发平台及环境194.3.1 Tomcat服务器194.3.2 IDE MyEclipse194.3.3 数据库 Mysql195 系统的总体设计205.1系统框架搭建205.2数据库关系表215.2.1 数据库ER图215.2.2 数据库表225.3系统时序图245.4 系统相关代码说明265.4.1 相关配置文件说明265.4.2 spring注解及其先关代码介绍28 Entity类及相关代码28 Controller类及相关代码29 Service层31 前台代码326 系统的实现效果356.1 读者页面展示356.2 管理员页面376.2.2 图书分类396.2.3 书籍信息396.2.4 借书信息416.2.5 读者分类446.2.6 管理信息456.2.6 信息发布456.3小结467 总结477.1 本论文主要贡献477.2 进一步工作计划47参考文献48致谢49附录501课题简介1.1 背景及意义随着时代的进步与发张,各行各业的都融入到了信息化之中。使用计算机信息化管理是现代企业和机构的标志,这一做法不仅提高 了工作效率,同时,对数据的存储、保存、分析和操作都起到了至关重要的作用。信息管理是所有与之相关系统的基础信息配置,是一切系统中不可缺少的重要组成成分。本系统就是为现代化图书管理信息系统而设计的。本系统是面向任何人的,包括学生、老师和在职人员等等,主要解决了手工记录容易出错等与书籍多等有关的问题,例如:如效率低、易出错、手续繁琐,还耗费大量的人力和物力,旨在实现现代化的信息管理。本系统有着与手工相比较无法代替的有点,例如:可以存储大量的数据,可靠性高,查找迅速等等的有点,提高了管理员与用户的效率,充分的体现了本系统的特点。这些优点能够极大地提高工作效率,也是图书馆等部门管理科学化、正规化的重要标志之一。而且计算机管理的成本不断降低。因此,开发一套这样的中小型图书管理软件已经很有必要,利用组织的无形资产创造价值的艺术1。1.2 系统开发的目的结合现代社会信息技术的发展,通过了解不同人对图书的管理的现状,为本系统的设计与实现规定了以下目的:1.2.1 提高管理质量与效率图书馆最大的特点就是有大量的书籍,同时要对每一本书还要记录在案,这就使得给管理员造成了很大的压力。这样大量繁杂的图书需要耗用的人力和物力是不可预计的,同时很容易造成信息的错误,所以提高人的工作效率和工作质量是本系统设计与实现的主要功能之一。本系统就是以少量的人力来做大量的事,提高管理的效率。同时通过数据库的来保存数据,对数据做到准确性,大量性,持久性和高效的检索。1.2.2 实现网上的动态管理信息社会的发展,越来越多的人都会使用互联网,并且有一部分人是迷恋的。设想:如果你到一个图书馆去借书, 但是你去了之后他说没有你需要的书籍了或者是发现今天没有开门,这个时候你是不是感到很气愤,也许你正在抱怨!。本系统的再一个开发与实现的目的就是实现网络的查看和对广大人民通知,减少群众出现上述的情况。节约群众的时间,保证群众对时间的合理性,减少不必要的错过。2 可行性研究可行性的研究是为了解决开发过程中所与到的问题,如:技术问题,业务问题,实用可行性,法律可行性等。2.1技术可行性图书管理系统是B/S开发和设计实现的,所以具体用到的技术有页面技术jsp、JQuery、artDialog弹框、datePicker日期插件、HighCharts图标插件等,后台主要是java编写,框架是有Spring+Springmvc+hibernate搭建。运行环境为Windows7(64bit),服务器为Tomcat7,数据库为MySQL。2.2 经济可行性本系统有明确的业务逻辑。满足了开发需求,以少量专业的业务人员来代替大量的人力,不仅使得系统的操作更加完美,同时也节省了大量的时间。本图书管理系统总的面向有两个方面,第一个面向对象为管理员,具体的业务为借书信息登记、读者信息登记、书籍信息登记、图书分类、书架信息、读者分类、管理信息、信息发布等的操作,主要是是对数据的增删改查,同时还有一些对管理员的提示等等。通过管理员就可以轻松的完成以上的所有操作,不需要手工那样麻烦。另一个面向对象为社会人士,可以使得他们了解图书馆的动态,同时本系统不是卖书的,而是借书的,只需要一定的押金就可以一直的借书,这样就等于更多的人有了自己的图书馆,想看什么书就看什么书,实实在在的解决了用户买书开销大的问题,还有就是本图书管理系统有利于大数据的存储,有不同书籍的分类和整理,这样就是满足了用户不同需求的书籍。同时本管理系统还有很强的扩张性,来增加用户和管理员的需求,做到更切合实际的需求,满足和有利于更多的人的生活。2.3 操作可行性操作可行性主要是对管理员和用户的使用情况的难度的评估。越来越多行业的信息都可以在网上找到,同时存在了这样一个问题:大多数的软件系统需要专业的技术人或者是有经验的工作人员了操作的。本系统是不需要的,对管理的操作,管理员只需要了解和熟悉整个的业务流程和会简单的数据查询、删除、修改等操作即可,不需要组织专业的培训和学习。对于用户,前台可以明确、清晰的了解到用户想要书籍的信息和图书馆的通知信息,不会让用户存在质疑的问题和现象。总的来说:本系统直观易懂,使用非常方便,只要了解基本的业务,操作本系统没有太大的问题。2.4 法律可行性本系统属于自动开发,不会侵犯他人、集体或国家利益,不存在侵权等问题,不违反国家法律,因此具有法律可行性。3 需求分析需求分析是整个软件设计过程的基础,在数据收集和深入调研的基础上,通过系统业务逻辑分析逐步明确系统设计要求和业务框架雏形。3.1 系统需求分析随着网络的发展,越来越多的人沉迷于网络,这就是的网络随处可见。这就有必要使得图书管理系统在网络上也是可见的。传统的图书馆受时间和空间的限制,有时候也会给读者带了一些麻烦,然而,本系统不受时间和空间的限制,同时将读者的收益提高到了最大的程度,同时还具有传统图书馆的大部分功能,满了不同读者的需求,不仅仅提高了效率,同时还增加了读者对他的喜爱程度。同时实现技术也是比较成熟的。该系统主要面向连个方面:读者对象和管理员对象。面向读者对象,必须让用户能够时实的了解图书馆的动态,包括:最近新到了那些新书、读者最近借阅的书籍、书籍类型统计展示和图书馆最新通知等。面向管理员对象,首先要做到对书籍可以高效合理的管理,其次要做到减少管理员不必要的操作,要在某些地方做到自动化的效果,这样既减少了管理员的工作量也减少了人为操作所出现的错误。3.2 系统结构图图书管理系统主要有两个大的模块,用户界面模块和管理员操作模块。图3-1系统流程图3.2.1用户结构图用户在打开首页后会看到图书查询、新书列表、最近借阅、信息通知、书籍统计模块,基本结构图如下:图3-2用户流程图3.2.2管理员结构图管理员登陆后会有借书信息、读者信息、书籍信息、图书分类、书架信息、读者分类、管理信息、信息发布模块,同时对这些模块要进行一系列的操作。如增删改查等。基本结构图如下:图3-3管理员流程图4 系统相关知识和关键技术介绍本课题使用J2EE技术完成图书管理软件的设计与实现,主要用到了J2EE中的常用关键技术如JSP、Web层框架SpringMVC等,对于JPA规范的实现-Hibernate框架以及B/S架构系统的开发中常用到的技术如Spring,AJAX等等。以下将进对系统架构和采用技术进行具体的介绍。4.1系统通用结构B/S浏览器/服务器模式,只要将程序在服务器上装好后,其他人只需要用浏览器就可以正常使用2。WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。B/S架构是一种瘦客户端系统3,通常使用三层架构搭建,即MVC。第一层为模型(model),即数据服务层,第二层为视图(view),即视图层,第三层为控制器(controller),即控制层,这样分层设计的方式大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量。特别的基于B/S架构的系统有很多优势,如开发简单,共享性强、成本降低,选择更多、部署和维护方便、业务扩展简单方便,通过增加网页即可增加服务器功能等等。尤其是跨平台、安全简便的Java语言问世后,B/S架构管理软件更是如虎添翼,能实现对各种设备的广泛覆盖,实现高度的信息化和通用化。如下图所示为B/S架构示意图。图4-1 B/S架构示意图4.2 Java编程语言Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。它具有四大特点如下:第1、 封装:面向对象编程的核心思想之一就是将数据和对数据的操作封装在一起。抽象即从具体的实例中抽取共同的性质形成一般的概念,如累的概念。人们经常谈到的机动车类就是从具体的实例中抽取共同的属性和功能形成的是一个概念,那么具体的轿车就是一个实例,即对象,其中包含了属性和行为,在实际的操作中我们可以操作这些属性,这就是面向对象的封装特性3。第二、抽象:抽象就是把一类具有共同属性的实体的共同特性抽取出来,封装成一个类,但是,这个类可以派生出其他的许许多多的类,来实现它具体的属性和方法。就比如说:车是一个抽象类,你只能想象车大致是什么样的,而不能完全的想象车的形状等,因为,没有具体的说明是那类车。它不是一个正真的实体,在语言中需要将抽象类实例化3。第三、继承:继承体现了一种先进的编程思想模式。子类可以继承父类的属性和方法,即继承父类的数据和数据上的操作,又可以增加子类特有的属性和方法,提高了实例的拓展性。本质上,父类和子类还一个实体。第四、多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为 .同时还有其他的一些特性:多线程、安全性、健壮性、可移植性和面向对象等特性。Sun公司对Java语言有如下解释:Java编程语言是个简单的、平台无关性、面向对象、多线程、安全、动态的语言13。本系统所采用的编程语言就是Java。4.2.1 SpringMvc 框架Spring MVC是目前最流行的WEB开发框架之一,它通过MVC三层架构模式很好明确的将数据、业务、展现层分离。它与Struts框架类似,但是比之更加方便,通过配置好的文件就可以自动获取url和确认返回路劲。SpringMVC的设计核心是DispatcharServlet展开的, DispatcherServlet负责将请求发送到特定的handler。并通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的视图。Spring MVC请求处理的整体流程如图:图4-2 SpringMVC请求处理整体流程图4.2.2 Spring 框架Spring是一个开源框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来4。Spring用于整合,好处是解耦。所谓解耦就是,可以减低组件与组件之间的关联关系,改变程序的结构,便于维护和增加系统的扩张性。为解决企业项目开发的复杂性提供了良好的方案。 Spring住要优势是分层架构,允许使用者选择不同的组件,同时还为 J2EE 应用程序开发提供了集成的框架。基于 JavaBeans 的采用控制翻转原则的配置管理,使得应用程序的组建更加快捷简易。从spring的灵活角度而言,任何Java项目都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说, 我们会使用IoC整合组件(各种Bean),使用AOP来管理事务。 和Hibernate相同,Spring的使用也没有限制,到底是用于Web工程还是普通Java程序。具体来说,Spring框架由很多模块的功能组成,如图3-4所示: 图4-3 Spring框架模块组成15在程序编写方面,Spring不重新开发已有的东西,它会将大量需要重复书写的代码提取出来进行切面编程。 配置文件的灵活性也使项目的灵活性得到了加强,可以实现在不改变代码的情况下只改变其中的配置文件实现整个系统的改变。这使程序的整体编写量精简了很多。本软件系统的构架由Spring完成组织,使整体结构轻便灵活。4.2.3 Hibernate框架Hibernate是开源的、用于封装数据访问层的组件,我们称之为数据访问层框架(戒持久层框架)。 之前我们通过JDBC/SQL语句从数据库中访问/操作数据,而Hibernate就是封装了这些操作,专门用于数据访问层的组件技术。Hibernate作为java最流行的对象-关系型数据艰苦映射工具,它不仅仅是管理java到数据库表的映射,同时也提供了相应的数据查询、插入等方法,可以大幅度的减少开发人员对SQL的编写,减少开发者使用SQL和JDBC对数据库访问所耗费的时间。Hibernate是对SQL语句有了特定的封装,同时把开发人员的重心从数据交互上转移,同意了面向对象开发的编程思想。图4-4 hibernate简单工作原理图4-4显示了Hibernate的核心接口的工作原理,它利用数据库和配置文件或者annotation来为应用程序提供数据交换服务,它的coreApi简介如下:SessionFactory(net.sf.hibernate.SessionFactory),tomcat启动后,它不仅仅包含已经编译好的映射和维护数据库的连接池,也是session的工厂类,用来返回session实例。Session(net.sf.hibernate.Session),代表了会话的过程。底层是把一个JDBC连接进行了打包,维护了connection,它可以包含一些持久化对象的缓存。Persistent Objects and Collections,持久化对象,即把数据保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。与其它ORM工具相比,Hibernate拥有自身的优势和特点。Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。它的底层由JDBC实现,因此Hibernate的兼容性与JDBC驱动和数据库都有一定的关系,而与Java程序或者App Server没有任何关系,不存在兼容问题。本系统的持久层计划将由Hibernate技术实现。4.3开发平台及环境4.3.1 Tomcat服务器Tomcat是一个带有JSP环境的Servlet容器5。同时,Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。4.3.2 IDE MyEclipseMyEclipse企业级工作平台,作为Eclipse的升级版本,相比较于Eclipse增加了很多的功能,它不仅集成了自己的服务器,同时,完美的支持了HTML、JSP、css、JavaScript等等。利用它我们不单单是编写代码,同时也可以用它来发布项目,在各个方面都大大的提高了开发者的工作效率。4.3.3 数据库 Mysql数据的管理和利用是通过计算机的数据管理软件-数据库管理系统来完成的6。MySQL是目前主流的一个数据库,有瑞典MySQLAB公司开发,后来被Oracle公司收购,MySQL是一个关系型数据库管理系统。目前在WEB应用方面比较流行数据库应用软件之一。同时MySQL也是一种关联数据库管理系统,它不是将数据放在一个大的仓库内,而是将数据保存在不同的表中,这样不仅提高了速度,同时也提高了对数据的操作的灵活性。由于MySQL语言是标准化语言,使得MySQL的可视化界面兴起,这就更加的提高了MySQL的使用率。还有就是MySQL较小的体积和总体成本低,这就导致了MySQL在一般的中小型企业中占的比例异常可观。 5 系统的总体设计5.1系统框架搭建首先,图书管理系统是基于J2EE架构进行开发的,使用J2EE搭建B/S系统具有典型的三层架构模式,本系统的开发、也采用了这样的架构,整个系统的结构如下图所示:图5-1 项目计划管理用例首先,在MyEclipse中建立相应的工程,导入框架的Jar包,再进行Spring框架配置文件bean.xml、spring-mvc.mxl、spring-common.xml等框架配置文件的书写,最后完成web工程中web.xml的配置,这样,管理系统的后台就配置起来了。之后,再加入自己需要的插件等,在完成了这些工作之后,整个系统的框架就在MyEclipse环境中完成了搭建。具体的结构如下图:图5-2 项目框架结构5.2数据库关系表5.2.1 数据库ER图完成了系统框架的搭建,需要根据用例图提供的逻辑示意对系统进行具体设计和编码。在系统设计过程中,首先根据逻辑关系完成数据库的设计,数据库设计是程序设计的重要步骤,合理的设计可以节约大量的人力物力投入,达到系统架构的最优化,下图是图书管理系统的数据库结构图。图5-3 数据库关系表5.2.2 数据库表表5-1书籍信息(bookinfo)表字段名称类型长度主键说明允许空idVarchar50YESidNObooknamevarchar50书名YEStypeidvarchar50书类型idYESbookauthorvarchar50作者YESbookpriceint4书价格YEStotalbookint10书总量YEScaseidvarchar50书位置idYESbookintimeint10进书时间YESoperatoridvarchar50管理者idYESbookcommentvarchar500书备注YESbookaddressvarchar100书出版社YEScurrbookint10当前数量YESbookcodeint10书号YES表5-2书籍类型表(booktype)表字段名称类型长度主键说明允许空idVarchar50YESidNOtypenamevarchar50书类型名YEScodevarchar50类型编号YEScommentvarchar500备注YES表5-3借书信息(borrow)表字段名称类型长度主键说明允许空idvarchar50YESidNOreaderidvarchar50读者idYESbookidvarchar50书idYESborrowtimevarchar50借书时间YESbacktimevarchar50还书时间YESisbackvarchar50是否还回YESmanageridvarchar50管理员idYESmoneyvarchar50押金YES表5-4信息发布表(infopublish)表字段名称类型长度主键说明允许空idVarchar50YESidNOtitlevarchar50标题YEScommentvarchar500内容YEScreatetimevarchar50发布日期YES表5-5管理员(manager)表字段名称类型长度主键说明允许空idVarchar50YESidNOnamevarchar50用户名YESpwdvarchar500密码YEScommentvarchar50备注YESrolevarchar50角色YES表5-6读者表(reader)表字段名称类型长度主键说明允许空idVarchar50YESidNOsexvarchar50性别YESnamevarchar50用户名YESreadernovarchar50读者编号YEStelvarchar50电话YESEmailvarchar50emailYESroleidvarchar50角色YES表5-7读者类型(readertype)表字段名称类型长度主键说明允许空idVarchar50YESidNOtypeNamevarchar50类型名称YEScodevarchar50类型编号YEScommentvarchar500备注YES表5-8书架(tb_bookcase)表字段名称类型长度主键说明允许空idVarchar50YESidNOnamevarchar50名称YEScommentvarchar500备注YES5.3系统时序图完成了数据库表结构的设计,一个重要的后续步骤是根据需求分析及用例模型构建系统的静态模型和动态模型。动态模型可以由时序图进行表示,静态模型则提供相关程序类图。系统的操作主要的时序图如下所示:读者进入首页:图5-4 读者时序图管理员进行系统登陆之后可以对借书人和书籍进行操作,下面是借书流程的时序图如下:图5-5 读者借书流程时序图由此可见借书流程是一个流水式操作,借书的前提必须在书籍信息、读者信息已完成的前提下进行的。程序的时序图是表达程序动态处理流程的最佳方式,可以对程序的功能形成一个直观的认识。5.4 系统相关代码说明5.4.1 相关配置文件说明客户端发出一个http请求给web服务器, web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),那么,web容器将请求转交给DispatcherServlet。 DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。那么我们先来看看DispatcherServlet配置文件,便于让他实现我们想要的效果。HttpServlet是在web.xml文件中声明的。通过classpath*:config/spring/spring-mvc.xml加载SpringMVC的核心配置文件。根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。 Handler再对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。最后,Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。通过加载classpath*:config/spring/spring-*.xml,将连接数据库连接,同时集成了hibernate,做到对编写代码更加的方便快捷。使用spring的HibernateDaoSupport.这样的话dao层使用spring提供的一系列模板方法,同时不用关心session, exception,事务管理也交给了spring。直接加载资源CommonService就可以调用CommonserviceImpl中的基本的方法。5.4.2 spring注解及其先关代码介绍在了解了图书管理系统的工作的流程之后,就可以对以上提供的流程进行编写,由于整个项目的框架是有MVC模式的,所以以下会提供相关程序类的一些代码片段,通过这些具有代表性的代码展现程序在代码实现上的成果。 Entity类及相关代码Hibernate在处理实体类的时候提供了对象间的关联关系,在增删改查的时候可以使用Hibernate设置好的关联关系对实体类对象进行联级操作,这样的设置可以大大的减少编写程序时的工作量,从而提高编写代码的效率,然而,书写SQL语句时如果涉及到级联操作的话,需要用到多表联合查询,大大的增加了代码量,因此可以得出Hibernate对于SQL语句的封装在某些场合是合适的。Spring集成Hibernate使得SQL的联级操作变得更加简单、快捷。如Borrow类,与数据库表的对应和对其他实体类之间的关联,通过Entity和Table(name = borrow)直接建立了数据库表与实体类之间的关系,用数据操作过之后在进封装,同时使用 ManyToOne、JoinColumn(name = readerId, nullable = true)、NotFound(action = NotFoundAction.IGNORE), 使得Borrow和Reader类的对应关系多对一,所以在Borrow中封装了Reader累的对象没具体的代码如下: EntityTable( name = borrow )public class Borrow IdGeneratedValue(generator=system-uuid)GenericGenerator(name = system-uuid,strategy=uuid)Column( length=32 )private String id ;ManyToOneJoinColumn( name = readerId, nullable = true)NotFound(action = NotFoundAction.IGNORE)private Reader reader;这样编写不仅仅完成了多种关联关系的映射,同时,也在使用Hibernate session的sava(),delete(), get()、update()等方法操作Borrow对象的时候,就会级联操作Reader对象,这样就简化了书写复杂的SQL-多表链接语句。当然,Hibernate的缺点也是相当的明显的,那就是查询效率的问题,他在操作的时候不仅仅执行的是一条语句,有可能执行多条,这样就导致了操作性能的问题。这样就需要应地适宜的来选取,要用什么语句来对数据库进行操作。当然,本系统数据库结构比较简单,所以就采用的的失眠所说的这种方式,Hibernate相比JDBC要占用更多的数据库资源,因此关联关系的设置要多多慎重。 Controller类及相关代码Controller类主要的总用就是一点,那就是通过请求的url获取指定的Controller,同时获取指定的方法,再通过方法对页面传进来的参数获取得到,之后操作并绑定数据重新传到相应的页面。具体的,如:BorrowController通过 Controller和RequestMapping(/library),通过Controller声明这是一个Controller,通过RequestMapping(/library)获取请求url的路径,确定请求到那个Controller进行操作。再通过方法上具体的RequestMapping()获取具体执行的方法。其中 Resource(name=CommonService)是加载配置文件spring-beans.xml中dao的代理声明。RequestParam(value=content, defaultValue=) String content, 是url中所带的参数的获取。最后,通过return语句直接返回给springMVC配置文件,确定页面路劲。具体代码如下:ControllerRequestMapping(/library)public class BorrowController Resource(name=CommonService)private CommonService commonService;RequestMapping(/list)public String getBorrowList(Model model, PageData pageData,RequestParam(value=content, defaultValue=) String content,RequestParam(value=select, defaultValue=) String select,HttpSession httpSession)/String readerId = (String)httpSession.getAttribute(manager); StringBuilder hql = new StringBuilder();if(!.contentEquals(select)hql.append( isback=).append(select).append( );if(!.contentEquals(content)hql.append( and reader.readerno=).append(content).append( );elseif(!.contentEquals(content)hql.append( reader.readerno=).append(content).append( );/System.out.println(readerId);pageData = commonService.getPageDataHql(Borrow.class, pageData, hql.toString();model.addAttribute(content, content);model.addAttribute(pageData, pageData);return /bishe/borrowbook/index;这段代码是管理员对借书列表的查看和查找,说明了Controller处理前台请求的一般方式。Controller类中的方法addBorrowList()首先对前台传递来的数据content、select进行封装,然后调用Service层的getPageDataHql()方法完成借书信息的查询并通过异常捕获机制将后台处理信息数据反馈给在浏览器端,使得管理员了解到借书信息列表。 Service层Service层的具体方法就是增删改查,现在提供一段Service层的方法说明业务是如何由DAO层内容构成一个整体的。主要的一个Service为CommonService,他是一个通用的Service,即适应于任何类型的类。它里面方法主要在Dao里面,包含的方法有 getPageDataHql()、getListHql()等等。主要Dao的代码如下:public PageData getPageDataHql(Class clazz, PageData pageData,String sql) String clas = clazz.getName().substring(clazz.getName().lastIndexOf(.)+1);StringBuilder hql = new StringBuilder();hql.append( from ).append(clas).append( where 1=1 ); /hql = from +clas;if(!sql.contentEquals()hql.append( and ).append(sql);Query query = sessionFactory.getCurrentSession().createQuery(hql.toString();/用于分页query.setFirstResult(pageData.getPageSize()*(pageData.getCurrPage();/就是说你的从第几条开始query.setMaxResults(pageData.getPageSize()-1);/页面默认显示的条数List list = query.list();pageData.setList(list);Query query1 = sessionFactory.getCurrentSession().crea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 半导体制造设备行业规模及核心企业市占率排名研究报告(by QYResearch)
- 2025年计算机四级考试辅导试题含答案
- 融合5G技术的新媒体新闻传播真实性与公信力研究报告
- 小学生睡眠课件
- 小学生看图猜谜语课件
- 中药药品标签管理办法
- 企业环境备案管理办法
- 企业冠名基金管理办法
- 临武特殊门诊管理办法
- 企业中级资格管理办法
- 拖拉机和联合收割机安全技术检验合格证明
- 消化内科护士实习生入科教育54张课件
- 检验科管理手册
- 装饰装修改造工程施工组织设计
- 招标代理服务规范
- GB/T 35700.2-2017船舶机械和电力混合推进系统要求第2部分:发电系统
- 静脉输液(最终版)
- 控制计划CP模板
- 银行不良贷款责任认定及问责管理工作实施细则
- 科技工作管理办法
- 北师大版八年级数学上册单元测试题附答案全套
评论
0/150
提交评论