当前位置:文档之家› 基于MyBatis和Spring的JavaEE数据持久层的研究与应用

基于MyBatis和Spring的JavaEE数据持久层的研究与应用

基于MyBatis和Spring的JavaEE数据持久层的研究与应用
基于MyBatis和Spring的JavaEE数据持久层的研究与应用

基于MyBatis和Spring的JavaEE数据持久层的

研究与应用

乔 岚

(宁夏财经职业技术学院,宁夏 银川 750021)

摘 要:在信息管理系统的设计初期,繁杂的增删查改操作占据了系统设计的大部分时间,使系统的开发周期延长。笔者针对这一问题,设计了一种基于MyBatis、Sping和JAVA注解的数据统一提交组件,并介绍了其在企业办公OA系统中的应用。框架使用了主流的MyBatis和Spring框架,大大简化了数据的增删查改操作,缩短了系统的开发周期,增加了系统的灵活性和可扩展性。

关键词:MyBatis;Spring;JAVA注解;数据持久层框架;ORM

中图分类号:TP311.52 文献标识码:A 文章编号:1003-9767(2017)08-073-04

Research and Application of JavaEE Data Persistence Layer based on MyBatis

and Spring

Qiao Lan

(Ningxia Finance & Economics Vocational College, Yinchuan Ningxia 750021, China) Abstract: In the early stage of design information management system, complex CRUD operations occupy most of the time the system design, the system development cycle of growth. Aiming at this problem, a design based on MyBatis, Sping and JAVA unified data annotation to components, and introduced its application in enterprise OA system. The framework uses the mainstream MyBatis and Spring framework, greatly simplifying the data additions and deletions, checking and modifying operations, shortening the development cycle of the system, and increasing the flexibility and scalability of the system.

Key words: MyBatis; Spring; JAVA annotation; data persistence layer framework; ORM

目前,基于B/S模式的三层或者多层的开发模式已成为了Web开发的主流方法,在系统的开发和使用过程中应用系统需要频繁对关系数据库中的记录进行增删改查操作,由于面向对象方法的普遍适用,在应用系统中数据表现为对象,在关系数据库中数据表现为带有关系的一条条记录,所以在插入时必须将对象转换为关系数据通过SQL插入到关系数据库中,而对于查询又必须将关系数据组装成对象供程序使用,如何避免这一繁琐的操作呢?关系-对象映射(ORM)的出现解决了这一问题,ORM在系统应用层和数据存储层之间建立一个一一对应的关系,把对关系数据的操作直接转化为对对象方法和属性的操作。目前主流的ORM框架主要有TopLink、Hibernate、Apache OJB、EJB、MyBatis等。但由于MyBatis自由灵活,因此,受到了很多用户的喜爱。本文就基于MyBatis提出了一种数据统一提交组件。1 MyBatis和Spring简介

MyBatis是一个半自动化的ORM框架,主要作用是将POJO与数据库中的表对应,在应用开发中采用面向对象的方法操作数据库记录。Mybatis的核心思想主要是在XML文件中配置好对关系数据库的所有操作的SQL语句,同时为每一条SQL语句配置一个ID,用来作为操作的标识符,此外还需要配置参数值以及返回值。所以MyBatis是一种半自动化的ORM框架,对于熟练使用面向对象编程的程序开发人员来说,通过MyBatis来操作对象就可以对关系数据库进行操作,这一点和Hibernate等是一样的,但是MyBatis并不会在运行期自动生成SQL执行,具体的SQL需要开发人员自己编写,然后在程序中指定每个操作的操作标识符ID,接着通过操作ID在XML配置文件中找到相应的SQL语句,同时将需要执行的SQL语句中的所需的操作参数、返回的结

作者简介:乔岚(1982-),女,宁夏银川人,本科,讲师。研究方向:计算机应用。

果值或者结果字段通过配置文件一一映射到指定POJO中。实际上,使用MyBatis作为项目的ORM框架,SQL语句的实际操作的控制权还是在程序开发人员手中,这样依赖系统的灵活性得到很大的提升,性能也得到了提高,但是却需要开发人员熟悉SQL语句,进行大量的配置,同时在数据库的移植上会比其他ORM框架复杂得多,尽管如此MyBatis 以其灵活的使用方式吸引了一大批使用者,使用MyBatis做ORM映射的系统有着更大的灵活性和自由空间。

Spring是一个轻量级的企业开源框架,主要是为了降低企业级应用程序设计的复杂性,Spring不针对某个层的解决方案,主要提供JAVA企业开发的各层解决方案。传统的J2EE应用开发效率低,没有一个统一的技术来支撑各厂商的应用服务器,使得J2EE程序没有真正实现“一处开发,处处运行”的目的,而Spring作为一个应用中间件,其独立于各应用服务器之上,在某些情况下甚至可以脱离应用服务器而独立工作,因此,它成为了企业级应用开发的一站式解决方案,但是Spring并不能取代其他框架,它是其他框架的粘合剂,能让其他框架在一起很好地工作。Spring框架轻量,最小可以打包在不到1 M的JAR包中发布,它具有控制反转(Ioc)、面向切面、可以当作容器使用等特点,还具有MVC、事务控制等功能,这些功能完全独立,开发者可以在使用过程中按需引入,使用十分灵活简单[1]。

2 MyBatis现存缺陷

MyBatis灵活方便,SQL Maps组件让开发人员在脱离了JDBC API、JAVA代码以及SQL语句的情况下直接对对象和关系数据库进行读写操作。但是,MyBatis也有自己的缺陷,具体如下。

(1)MyBatis以XML作为对象与数据库的中间配置文件,虽然可以提高系统的灵活性、降低程序的耦合性,但是随着对象数量的不断增长,程序员将编写大量的XML配置文件,尤其是开发大型商业系统时,如大型ERP系统,系统中包含的数据表达到几百张,如果手工为每一张表都编写相应的配置文件,其工作量可想而知[2]。

(2)在如今的系统开发中都采用分层思想,把系统分为DAO(数据访问)层、Service(业务逻辑)层、View(表示)层,而DAO层的大部分工作是对实体进行增删查改操作,由于MyBatise是将所有操作存放在XML配置文件中,于是在DAO层中操作每个实体时必须手工指定操作的ID,这样程序才能找到相应的SQL语句并执行,所以在系统实体较多的情况下DAO层的实现非常繁杂和重复,并且在使用Spring的情况下,Spring中DAO层Bean的配置文件也将变得繁琐复杂。

第一个缺陷的解决方法相对简单,可以自制相应的配置工具,每一个对象生成其相应的XML配置文件。下面主要介绍对第二个缺陷的解决方案,并基于该方案设计一个数据统一提交组件。3 组件设计

鉴于以上的缺陷,本文提出了一种基于Spring和JAVA 注解方法的解决方案,首先看一下MyBatis的执行原理。3.1 MyBatis执行原理

如图1所示,使用更改时序图来形象说明MyBatis的工作原理,具体执行过程如下。

(1)应用程序调用相对应函数(一般和操作ID相同),传入指定参数。

(2)读取XML配置文件,被调用的程序通过通过Sq1Map-Config.xml以及操作对象名称找到对应的XML配置文件。

(3)程序将对象和配置文件载入内存中。

(4)查找到对应ID的SQL语句。

(5)带入参数,程序根据映射文件映射的关系将传入对象的属性替换成相对应的SQL所需要的参数值。

(6)执行SQL语句,将替换完参数的SQL语句通过驱动程序传入数据库管理系统中执行。

(7)返回结果,根据XML文件中对应操作ID配置的返回类型,将执行SQL语句后的结果返回给应用程序。

具体Update的执行过程如图1

所示:

图1 MyBatis基本执行原理

3.2 设计思路

了解了执行原理后,可以发现只要能让程序在运行中自动找到相对应的XML配置文件而不需要程序员手工指定就可以弥补上文中提到的第二个缺陷。

为了让JAVA应用程序在运行的过程中动态获取到这个对象实体在XML映射文件中配置的SQL语句,可以使用JAVA的反射功能和JAVA的注解功能来实现[3]。事先需要在每个POJO对象类上增加一个自定义注解,注解上标明该对象所对应的XML映射文件名称、主键名称、不需要查询的列名称以及其他需要的信息,然后使用JAVA的反射功能,让应用程序在JAVA虚拟机运行的过程中获得该对象对应的XML文件名称,通过查找文件内容找到某次操作对应的SQL语句。

J2EE企业级应用程序开发一般都采取三层结构,即持久层、业务逻辑层、展现层,在应用程序中一般都会有持久

层对应的数据接口DAO 和实现数据接口的DaoImpl ,业务逻辑层的接口Service 和实现该接口的ServiceImpl 以及展示层的Action 或者Servlet [4]

。应用系统中的每个业务模块几乎都需要这五个结构。如果该应用系统比较大,或者每个业务模块之间存在着调用引用等耦合现象的话,在各层就需要进行大量的配置工作,尤其是在Action 和Service 层。为了解决配置复杂的难题,在开发应用程序之前,就需要设计一个公用的底层数据接口Dao ,Dao 中几乎包含了对单表实体操作的所有功能,然后根据该Dao 配置好对应的XML 文件,接着设计一个Service 接口,该接口中使用Dao 完成绝大多数增删改查等工作。然后在引用系统的展现层Action 中就只需要申明一个Service 就可以完成对单表的操作。由于系统集成了MyBatis 和Spring ,所以Dao 的实现一般都要继承SqlMapClientDaoSupport [5]。具体设计类图如图2

所示:

图2 组件类图

(1)CommonDao :该接口中定义了一系列通用的操作实体类的方法,如Save 、Delete 、Update 、Get 、Find 、分页查询,通过SQL 语句查询或使用存储过程查询等。

(2)CommonDaoImpl :CommonDao 的实现类,借助于MyBaise 和SQL 的结合,实现所有基本的增删改查等功能,注意在设计实现类时,XML 配置文件中的查询列表不要使用“*”符,而尽量使用数据表的列标题,一是为了后来更改数据库表时XML 文件只需要在对应的列语句中更改相对应的列名称,二来对于一些无关紧要的自己可以精简,以此提高系统运行的效率。

(3)CommonService :该接口为通用服务类接口,定义了一系列通用服务方法,包括对实体的增删查改,同时增加了这些方法的重载,并且扩展了一些高级功能,比如查询数量、获得主键、检查更新时间戳、统计分析等。

(4)CommonServiceImpl :CommonService 的实现类,在CommonServiceImpl 中包含了CommonDao 的一个实现实例Dao ,Dao 使用Spring 的依赖注入框架IoC 来实现注入。

(5)Ormannotation :这是一个注解,在数据提交组件中最关键的就是在程序运行时自动找到实例所对应的配置文件,该信息就保存在实体类上加的注解中,注解中包含了配置文件信息、对应的表名、主键、外键和表明blob 、clob 的字段名等信息,增加表明blob 和clob 的字段的原因是在查

询时将类型为blob 和clob 的属性去除,原因在于查询和更改时不会经常查找和更改blob 的字节类型和clob 的长文本类型,将类型为blob 和clob 的字段排除在外,以提高系统运行的效率。

(6)AnnotationInject :这是一个工具类,主要根据JA V A 反射和实体中的注解信息在程序运行过程中获得相关的信息。

(7)SqlClientDaoSupport :该类为Spring 中封装的使用MyBatis 操控数据库的工具类。

(8)AccountDao 、AccountDaoImpl 、AccountService 、AccountServiceImpl 、AccountAction 为系统中为说明实现某种特殊功能而增加的一个实际账户例子,AccountDao 继承CommonDao ,AccountDaoImpl 继承SqlClientDaoSupport 实现AccountDao ,AccountService 继承CommonService ,AccountServiceImpl 为AccountService 的实现类。

通过数据提交组件更新上例中的Account 得到的顺序图如图3

所示:

图3 使用组件更新Account顺序图

通过图3可以得知系统更新一个账户(Account )只需调用CommonDao 传入一个添加了注解的账户的实例,就可以实现更新。同理,如果系统是要更新一个用户(User ),那么在CommonDao 中传入一个添加了注解的User 实例即可,修改系统内其他实体同理,通过组件对系统内所有的实体进行增删查改的操作都可以使用CommonDao 来实现,而不需要为某个实体专门编写数据访问接口。在展现层(Action/Servlet )中对多个实体进行操作时也只需要定义一个CommonService 。

同时如果系统中对Account 实体有特殊的操作需要,例如对Acount 的统计分析、关联等,CommonDao 无法满足时可以自定义一个AccountDao ,让其继承CommonDao ,同时添加自己的特殊操作即可。 3.3 详细设计 3.3.1 CommonDao

CommonDao 是一个通用的数据库操作接口,其需要通过MyBatis 操控底层的数据库,因此需要找到相应的配置信息。由于操作的对象不同,所需的配置信息也不同,需要在程序运行时动态获取,所以每个方法中都需要一个namespace 的参数。具体的接口定义的函数有保存、更新、隐藏、逻辑删除、物理删除、通过Map 查找、通过对象查找、

通过ID查找唯一对象、分页查找等。

3.3.2 CommonService

CommonService接口是服务层的通用接口,其接收应用层传过来的实体对象参数,然后通过注解和JAVA反射获取配置信息,传给数据操作层,所以接口参数中不需要指定namespace参数,但是在有searchListByMap对象的实例中没有办法获取到配置信息,必须手动指定。具体接口设计包含功能如下:

void save(Record record):保存一个对象;

boolean isExists(Record record):判断某个对象是否存在;

void saveOrupdate(Record record):保存或者更新一个对象,如果该对象ID存在就更新,否者就新增;

void update(Record record):更新一个实体对象;

void del(Record record, int flag):删除一个对象,flag为1表示逻辑删除,为0表示物理删除;

void del(Record record, Map map):通过一个Map对象删除一个对象;

List searchListByMap(Record record, Map map):通过一个Map对象查找匹配的实体列表;

List searchListByMap(String namespace, Map map):通过Map对象和命名空间直接查找实体对象列表;

Object searchObjectByMap(Record record , Map map):通过Map查找单个实体对象;

Object searchObjectByMap(String namespace, Map map):通过Map和命名空间查找单个实体对象;

List searchListByObject(Record Record):通过实体对象查找和该实体对象属性相同的对象列表;

Object searchObjectByObject(Record record):通过实体对象查找单一实体对象;

Object searchById(Record record , long id):通过实体对象和对象的ID查找到唯一的实体对象;

Object searchById(String namespace, long id):通过命名空间和实体对象的ID直接获取到唯一的实体对象;

List searchAll(Record record):通过实体对象查找所有的实体对象。

3.3.3 OrmAnnotation

SQL语句可以通过配置文件来获取并执行,但是如何让JAVA虚拟机在运行时知道该实体对应的XML文件在哪里,找到文件后如何查找到对应的SQL呢?上面已讲过可以通过JAVA反射和注解来实现,主要配置RetentionPolicy. RUNTIME和ElementType.TYPE,在注解内部增加了table、pk、fk、namespace、bytes等属性,具体实现代码如下所示:

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.TYPE)

@interface OrmAnnotation {

String table() default "";

String pk() default "";

String fk() default "";

String namespace() default "";

String bytes() default "";}

其中table表示该实体对应的关系数据库的表名,pk表示主键属性,fk表示外键关联属性,namespace表示该实体在配置文件中对应在哪个命名空间下,用于自动寻找操作ID 和对应的SQL语句,tytes表示实体中类型为byte[]对应关系数据库中类型为blob的字段,用于排除查询条件。同时为了能在程序中方便得到namespace的值,需要设计一个工具类来实现AnnotationInject。

3.3.4 调用示例

在Action或者Servelet中声明一个CommonService的实现类service,然后使用service.method(object)来实现对实例的操作,比如增加一个用户service.save(user)、更新一个账户service.update(account)、查找所有的商品service. searchAll(good)等。

4 结 语

现如今许多企业已不同程度地实现了信息化,但是随着业务的发展各种信息系统功能不断增加,涉及的数据库表增多,表之间的关系复杂,表结构变化频繁、数据量大,这样对于基础数据的维护成了系统开发升级中繁琐但又不得不做的工作,以至于延长了系统开发的周期。虽然Hibernate在解决数据的增删查改问题方面很有优势,但是Hibernate在一些特定的环境中,如老系统升级、表结构封闭、对查询要求极为苛刻的条件下就不太合适了,故笔者提出将基于MyBatis的数据统一提交组件应用于现有的系统中,缩减了系统开发周期,同时也增强了系统的灵活性,对于企业信息系统的建设有很好的借鉴和参考价值。

参考文献

[1]李洋.SSM框架在Web应用开发中的设计与实现[J].计算机技术与发展,2016,26(12):190-194.

[2]徐雯,高建华.基于Spring MVC及MyBatis的Web 应用框架研究[J].微型电脑应用,2012,28(7):1-4,10.

[3]林显忠.基于SSM框架的思想政治工作方法分析系统设计与实现[J].金融科技时代,2017(1):36-39.

[4]贺军,焦荣.基于XML应用的MyBatis技术[J].火力与指挥控制,2013(z1):86-88.

[5]阳小兰,罗明.基于Spring+SpringMVC+MyBatis网上论坛的设计与实现[J].黑龙江科技信息,2016(36):279-280.

Spring和MyBatis的外文翻译..

本科生毕业设计 (论文) 外文翻译 原文标题MVC Design Pattern for the multi framework distributed applications using XML, spring and struts framework 译文标题使用XML,Spring和struts以MVC为设计模式的多分布式应用程序框架 作者所在系别计算机与遥感信息技术学院 作者所在班级B12511 作者姓名王硕 作者学号20124051117 指导教师姓名耿炎 指导教师职称院长 完成时间2015 年1 月 北华航天工业学院教务处制

译文标题使用XML,Spring和struts以MVC为设计模式的多分布式应用程序框 架 原文标题MVC Design Pattern for the multi frameworkdistributed applications using XML, spring and struts framework 作者Praveen Gupta 译名普利文·古塔国籍印度 原文出处International Journal on Computer Science and Engineering 使用XML,Spring和struts以MVC为设计模式的多分布式应用程序框架 摘要:模型-视图-控制器(MVC)是一个基本的设计模式,用来分离用户界面与业务的逻辑。近些年来,应用程序的规模越来越大,而MVC设计模式可以弱耦合不同应用层的程序。本文提出了一种基于J2EE平台上的网络,它扩展了MVC、XML 的应用程序框架,易于维护。这是一个包括表示层、业务层、数据持久层和数据库层的多系统层,由于其代码的具有独立性,可维护性和可重用性大大提升。在本文中,我们使用MVC实现spring和struts框架。我们的研究显示,应用多个框架设计应用程序时,使用MVC概念能使应用程序转变为更容易、较单一的框架。 关键字:MVC,Spring,XML 一介绍 近些年来,web是非常复杂的问题。因为公司和组织越来越多,不同类型的通讯设备也越来越多,特别当业务要求应用程序使用web和许多通信设备的时候,网络编程的性能越加重要。所以在互联网上,在增加负载的数据的同时,我们必须照顾体系结构的问题。让我们简要讨论到目前为止MVC的研究。 1.1没有MVC 在web开发的初始阶段,页面被用来设计html,其中Html是纯文本。这是第一个在互联网上工作的标记语言。今天仍然是基于块的所有互联网的编程语言。用户必须实现与静态页面交互,信息手动写在页面时必须改变。随着时间增长,语言和页面可以按照用户需求相互作用,页面也会有相应的变化。 1.2 MVC模式一 第一个重大变化是由于架构的流行,引入了MVC模式。这种具有控制演示、业务逻辑和流程的架构是以页面为中心,以Java语言为服务器的页面程序。逻辑就是在这个模型概念中介绍的。Java bean和scriptlet、表达式等业务逻辑都是以硬性编码的形式存在的。页面里的所有代码都是用jsp编写的。让我们假设,我们想传输基于我们收到数据时的jsp的情况。 图一页面导航MVC-1框架 1.3 MVC模式二 模型1架构能够解决一些网络和网络编程的问题,但仍有很多东西丢失。它是集中jsp页面的导航,从而能进一步发展的体系结构的观点。在这个过程中未来发

Spring对持久层封装

事务管理 对于J2EE 应用程序而言,事务的处理一般有两种模式: 1.依赖特定事务资源的事务处理 这是应用开发中最常见的模式,即通过特定资源提供的事务机制进行事务管理。如通过JDBC、JTA 的rollback、commit方法;Hibernate Transaction 的rollback、commit方法等。这种方法大家已经相当熟悉。 2.依赖容器的参数化事务管理 通过容器提供的集约式参数化事务机制,实现事务的外部管理,如EJB 中的事务管理模式。 容器管理的参数化事务为程序开发提供了相当的灵活性,同时因为将事务委托给容器进行管理,应用逻辑中无需再编写事务代码,大大节省了代码量(特别是针对需要同时操作多个事务资源的应用),从而提高了生产率。 Spring事务管理能给我们带来什么? 对于传统的基于特定事务资源的事务处理而言(如基于JDBC 的数据库访问),Spring 并不会对其产生什么影响,我们照样可以成功编写并运行这样的代码。同时,Spring还提供了一些辅助类可供我们选择使用,这些辅助类简化了传统的数据库操作流程,在一定程度上节省了工作量,提高了编码效率。 对于依赖容器的参数化事务管理而言,Spring 则表现出了极大的价值。Spring本身也是一个容器,只是相对EJB容器而言,Spring显得更为轻便小巧。我们无需付出其他方面的代价,即可通过Spring实现基于容器的事务管理(本质上来讲,Spring的事务管理是基于动态AOP)。 下面这段xml配置片断展示了Spring中的事务设定方式: com.mysql.jdbc.Driver jdbc:mysql://localhost/test user mypass

Mybatis框架实验报告

实验:Mybatis框架 学号: 222016CCCCCCCC 姓名:CCCC 班级:二年纪:2016级 专业:计算机科学与技术 实验目的: 基本掌握mybatis持久层框架,对数据库进行操作 实验环境:tomcat9.0、eclipse、Mybatis、mysql、Navicat for Mysql、windows10OS、JDK1.8.0 实验内容: 一、数据库操作 1、新建数据库mybatis,UTF-8字符集 2、新建表user 3、对user表添加数据,并保存

二、Java项目 1、创建Web工程mybatisdemo并拷贝jar包: 2、在src下建立Configuration.xml文件,文件代码如下:

各种系统框架图简介

各种系统框架图简介 以下文字和架构图均在本人相关系统设计和架构方案中有所应用。 原文出处:https://www.doczj.com/doc/b42060794.html,/6517/viewspace-609654 1.Spring 架构图 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

?Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI 、EJB 、电子邮件、国际化、校验和调度功能。 ?Spring AOP :通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring 的应用程序 中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。 ?Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构 简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打 开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常 层次结构。 ?Spring ORM :Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO 、Hibernate 和iBatis SQL Map 。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。 2.ibatis 架构图 ibatis 是一个基于Java的持久层框架。 iBATIS 提供的持久层框架包括SQL Maps 和Data Access Objects ( DAO ),同时还提供一个利用这个框架开发的 JPetStore 实例。

SSM框架简介,很多IT公司都会用的框架

SSM框架简介,很多IT公司都会用的框架 基本概念1、Spring Spring是一个开源框架,起源于2003年的轻量级Java框架,是为了解决企业复杂性开发而创建的。Spring使用基本的JavaBean来完成只可能有EJB完成的事情,Spring的用途不仅限于服务器的开发,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 2、SpringMVCSpring 框架提供了构建Web 应用程序的全功能MVC 模块。使用Spring 可插入的MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等 3、MyBatisMyBatis是由apache的一个开源项目iBatis演变而来,一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集框架创建过程 1、Maven Web项目创建 2、Maven项目的pom.xml配置,导入项目所需要的基本jar 包 3、资源文件的创建,src/main/java里面存放java代码,src/main/resources存放框架的配置文件,src/test/java存放测试代码 4、Spring与MyBatis的整合4.1 jdbc.properties文件

的配置4.2 spring-dao.xml文件的配置 5、配置Spring-Service 6、SpringMVC的配置: spring-web.xml7、配置web.xml文件以上介绍了SSM框架的配置过程,接下来总体说下配置过程把:创建maven工程导入jar包,配置pom.xml文件配置spring-mybatis: jdbc.properties -> spring与mybatis整合编写entity,dao,mapper代码整合spring-mybatis后,对dao层方法进行测试配置spring-service编写service和serviceImpl代码,以用户为基础写service测试service配置spring-web:springMVCcontroller类,类似于servlet,负责数据的请求与相应mybatis -> spring -> apringMVC配置web.xml文件写网页代码和controller类代码

Mybatis总结

Mybatis总结 1.mybatis的简单概述: 1.1mybatis简单概述: MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的XML 或注解来配置和映射原生信息,将接口和Java 的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 1.2 功能架构: 分为三层: (1).API接口层:定义api接口,外部人员通过这个接口来调用方法从而操纵数据库。 (2).数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 (3).基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数 据处理层提供最基础的支撑。 2.mybatis快速入门: a. 添加jar包: mybatis asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar log4j-1.2.16.jar mybatis-3.1.1.jar slf4j-api-1.6.2.jar slf4j-log4j12-1.6.2.jar mysql驱动 mysql-connector-java-5.1.7-bin.jar b. 建库+表: create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES('Tom', 12); INSERT INTO users(NAME, age) VALUES('Jack', 11);

SpringMvc +Mybatis最全的配置

Springmvc+mybatis框架配置 (内含日志+多数据源配置+事务配置+maven配置)1spring-mvc.xml

SSM基础框架搭建(SpringMVC+Spring+Mybatis)

SSM基础框架搭建(SpringMVC+Spring+Mybatis) SSM框架简述 到现在用了SSM框架也有一段时间了,对于基础的使用已经基本习惯,这段时间也多多少少搭了很多遍基础框架,当然每一次的搭建都会比原先搭建的东西更多些,也会更加完善,我相信大家也会从搭建的过程中成长去学到很多东西,SSM框架网上也有很多教程,不过我相信每个编写以及阅读的人总会从相似的文章中学到不同的东西. SSM框架基础概念 Spring 这里不得不说Spring非常强大,Spring拥有这IOC(控制反转,依赖注入)和AOP(面向切面编程)这两个强大的功能,这两个功能使框架足够的解耦,通过工厂模式和bean的配置完成对象的注入并且由bean生成的对象是单例的 SpringMVC SpringMVC分离了控制器,验证器,Servlet分发器,模型对象等 Mybatis Mybatis解除了程序与代码的耦合度,在一定程度上简化了sql的管理,只需要在XML中进行相应SQL的编写即可,Mybatis提供了相应的映射,配置起来更加容易 SSM基础框架搭建 这里就直接介绍SSM框架如何搭建了,至于环境配置和MAVEN项目的创建可以参考我的博客,也可以参考环境搭建,MAVEN项目搭建,下面开始搭建的教程,可能是对于上文链接博客的整合的完善与一些细微错误的纠正吧。 引入相关的JRA包 4.0.2.RELEASE 3.2.6 1.7.7 1.2.17 junit junit 4.11

MyBatis 3 整合Spring3、SpringMVC

MyBatis整合Spring 开发环境: System:Windows WebBrowser:IE6+、Firefox3+ JavaEE Server:tomcat5.0.2.8、tomcat6 IDE:eclipse、MyEclipse 8 Database:MySQL 开发依赖库: JavaEE5、Spring 3.0.5、Mybatis 3.0.4、myBatis-spring-1.0、junit4.8.2 Email:hoojo_@https://www.doczj.com/doc/b42060794.html, Blog:https://www.doczj.com/doc/b42060794.html,/IBM_hoojo https://www.doczj.com/doc/b42060794.html,/ 1、首先新建一个WebProject 命名为MyBatisForSpring,新建项目时,使用JavaEE5 的lib库。然后手动添加需要的jar包,所需jar包如下: 2

contextConfigLocation classpath*:applicationContext-*.xml dispatcher org.springframework.web.servlet.DispatcherServl et contextConfigLocation /WEB-INF/dispatcher.xml 1 dispatcher *.do characterEncodingFilter org.springframework.web.filter.CharacterEncoding Filter encoding UTF-8 characterEncodingFilter /* 3

java三大轻量级框架

Spring Framework【Java开源J2EE框架】 Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control 容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping 解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。【SpringIDE:Eclipse平台下一个辅助开发插件】. Struts【Java开源Web框架】 Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP 技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】 Hibernate【Java开源持久层框架】 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】

三大主流框架的技术起源

在Java开发中,我们经常使用Struts、Hibernate和Spring三个主流框架,但你是否知道这三个框架最初是为解决怎样的问题而生的? Struts、Hibernate和Spring是我们Java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解决方案。但你是否知道,这些知名框架最初是怎样产生的? 我们知道,传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的JSP、负责流程逻辑控制的Servlet以及负责数据封装的Javabean。但是这种结构仍然存在问题:如JSP页面中需要使用<%>符号嵌入很多的Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等。 Struts 为了解决这些问题,出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个Form类负责传递Action和JSP 中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑。从此JSP页面中不需要出现一行<%%>包围的Java代码了。可是所有的运算逻辑都放在Struts的Action里将使得Action类复用度低和逻辑混乱,所以通常人们会把整个Web应用程序分为三层,Struts负责显示层,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。 使用JDBC连接来读写数据库,我们最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。Hibernate 这时出现了Hibernate框架,它需要你创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性一一对应,当然也可以实现关系数据库的各种表件关联的对应。当我们需要相关操作是,不用再关注数据库表。我们不用再去一行行的查询数据库,只需要持久化类就可以完成增删改查的功能。使我们的软件开发真正面向对象,而不是面向混乱的代码。我的感受是,使用Hibernate比JDBC方式减少了80%的编程量。 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的Struts需要调用一个业务类,就需要new一个业务类出来,然后使用;业务层需要调用持久层的类,也需要new 一个持久层类出来用。通过这种new的方式互相调用就是软件开发中最糟糕设计的体现。简单的说,就是调用者依赖被调用者,它们之间形成了强耦合,如果我想在其他地方复用某个类,则这个类依赖的其他类也需要包含。程序就变得很混乱,每个类互相依赖互相调用,复用度极低。如果一个类做了修改,则依赖它的很多类都会受到牵连。为此,出现Spring 框架。 Spring Spring的作用就是完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以Spring框架最核心的就是所谓的依赖注射和控制反转。现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,这个结构是目前国内最流行的Java Web应用程序架构了。另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做Spring MVC,同时为了很好的处理事物,Spring 集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大。

springmvc+spring+mybatis整合

springmvc+spring+mybatis整合 首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。 然后我们就细细的一步一步来整合。 1 创建一个Web项目。 2 导入Mybatis3、Spring4、SpringMVC4、连接数据库(我使用的数据库是mysql)的jar包。 我所用的包: spring-websocket-4.2.0.RELEASE.jar

3 创建Mybatis3、Spring4、SpringMVC4、连接数据库的配置文件。 4 配置web.xml 1 2 7 8 9 10contextConfigLocation 11 12/WEB-INF/classes/applicationContext.xml, 13 14 15 16 17 18 19 20log4jConfigLocation 21/WEB-INF/log4j.xml 22 23 24 25log4jRefreshInterval 2660000 27

各技术框架架构图

各种系统架构图及其简介 1.Spring 架构图 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: ?核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转(IOC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 ?Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI 、EJB 、电子邮件、国际化、校验和调度功能。 ?Spring AOP :通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring 的应用程序中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。 ?Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。 ?Spring ORM :Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO 、Hibernate 和iBatis SQL Map 。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SSI框架搭建 SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6 编号:SSI-SMVC3-S3-I3 版本:V1.0 级别:公开 编写时间:2016-02-17

目录 1导言 (1) 1.1目的 (1) 1.2范围 (1) 1.3说明 (1) 2搭建SpringMVC (2) 2.1搭建所需jar包 (2) 2.2其他依赖包 (3) 2.3搭建步骤 (4) 2.3.1创建项目 (4) 2.3.2导入jar包 (6) 2.3.3配置web.xml (7) 2.3.4配置spring-servlet.xml (9) 2.3.5配置applicationContext.xml (10) 2.3.6配置log4j.properties (10) 3整合mybatis (10) 3.1整合所需jar包 (10) 3.2其他依赖包 (11) 3.3整合步骤 (11) 3.3.1导入jar包 (11) 3.3.2配置config.properties (11) 3.3.3配置spring-dataSource.xml (12) 3.3.4 配置applicationContext.xml (15) 3.3.5配置mybatis-config.xml (16) 3.3.6创建实体model (17) 3.3.7创建实例化dao (19) 3.3.8 创建业务服务service (21) 3.3.9创建控制层controller (23)

3.3.10页面代码 (28) 3.3.11启动项目 (37)

1导言 1.1 目的 本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。 1.2 范围 本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。 1.3 说明 本文档是个人总结的经验,仅供参考学习,同时欢迎朋友们一起沟通学习,文档中会对使用的jar做详细解说,对配置的过程使用图文说明,因为SSI博大精深,很多知识在搭建过程中没有使用到,只是一个基础框架的搭建,能测试通过就可以,所以对于高要求的开发,需要自己添加jar、增加方法和配置,同时文档中出现的纰漏希望朋友们等指正。 开发环境eclipse-jee-indigo-SR1-win32-dic,Tomcat7.0,JDK1.7,mysql。

各种框架架构图简介

1.Spring 架构图 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: ?核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 ?Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI 、EJB 、电子邮件、国际化、校验和调度功能。 ?Spring AOP :通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring 的应用程序 中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组 件,就可以将声明性事务管理集成到应用程序中。

?Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。 ?Spring ORM :Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO 、Hibernate 和iBatis SQL Map 。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。 2.ibatis 架构图 ibatis 是一个基于Java的持久层框架。 iBATIS 提供的持久层框架包括SQL Maps 和Data Access Objects ( DAO ),同时还提供一个利用这个框架开发的 JPetStore 实例。 IBATIS :最大的优点是可以有效的控制sql 发送的数目,提高数据层的执行效率!它需要程序员自己去写sql 语句,不象hibernate 那样是完全面向对象的,自动化的,ibatis 是半自动化的,通过表和对象的映射以及手工书写的sql 语句,能够实现比hibernate 等更高的查询效率。 Ibatis 只是封装了数据访问层,替我们做了部分的对象关系映射。但代价是必须要写xml配置文件,相对于Hibernate 还要写很多sql 。Hibernate 通过工具直接从数据库模式生成实体类和基本的配置文件,而且大部分情况下不需要我们写sql ,会较大的提升开发效率。但这些也有很多的局限性,尤其是对

mybatis入门教程(一)(超简单)

mybatis 第一天mybatis的基础知识 课程安排: mybatis和springmvc通过订单商品案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开发)问题总结 mybatis框架原理(掌握) mybatis入门程序 用户的增、删、改、查 mybatis开发dao两种方法: 原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握) mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件SqlMapConfig.xml mybatis核心: mybatis输入映射(掌握) mybatis输出映射(掌握) mybatis的动态sql(掌握) 第二天:高级知识 订单商品数据模型分析 高级结果集映射(一对一、一对多、多对多) mybatis延迟加载 mybatis查询缓存(一级缓存、二级缓存) mybaits和spring进行整合(掌握) mybatis逆向工程 1对原生态jdbc程序中问题总结 1.1环境 java环境:jdk1.7.0_72 eclipse:indigo mysql:5.1 1.2创建mysql数据

sql_table.sql:记录表结构 sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本 1.3jdbc程序 使用jdbc查询mysql数据库中用户表的记录。 创建java工程,加入jar包: 数据库驱动包(mysql5.1) 上边的是mysql驱动。 下边的是oracle的驱动。 程序代码: 1.4问题总结 1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。 设想:使用数据库连接池管理数据库连接。 2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。 3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。设想:将sql语句及占位符号和参数全部配置在xml中。

相关主题
文本预览
相关文档 最新文档