当前位置:文档之家› mybatis第二章(朱磊)孔

mybatis第二章(朱磊)孔

mybatis第二章(朱磊)孔
mybatis第二章(朱磊)孔

Touteng 安博A+精英软件人才培养工程系列教材

基于mybatis开发持久层应用

(第三阶段)

版本历史

目录

第2章MyBatis 进阶 (2)

核心技能部分 (5)

2.1 MyBatis 级联查询 (5)

2.1.1 什么是关联关系 (5)

2.1.2 关联 (6)

2.1.3 动态SQL (13)

本章总结 (18)

任务实训部分 (18)

1:继续完善学生管理系统,对学生进行条件查询 (18)

2:对表Classes进行删除操作 (20)

3:对表Classes进行更新操作 (21)

巩固练习 (22)

2.2 Mybatis 缓存 (23)

2.3 Mybatis 映射器注解 (26)

第2章M yBatis 进阶

学习内容

MyBatis 高级级联查询

MyBatis 集合映射、关联优化

MyBatis 动态SQL语句、存储过程

能力目标

掌握MyBatis 高级级联查询

掌握MyBatis 集合映射

掌握MyBatis 动态SQL语句

了解Mybatis 存储过程

本章简介

第一章主要讲解了Mybatis总体架构、运行原理,并且使用mybatis实现了对数据库的CRUD操作。

在面向对象设计中,数据库表之间的关系一般被设计为实体对象之间的关系,实体对象之间关系一般包括:多对一,一对多,一对一,多对多。

Mybatis在3.X之后引进了以注解形式实现简单的映射语句。

本章主要针对对象的关联关系、关联映射配置实现映射进行讲解。

核心技能部分

2.1 MyBatis 级联查询

2.1.1 什么是关联关系

关联体现的是两个类之间语义级别的一种强依赖关系。比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。

关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记

在mybatis中,实体类中的关联关系直接映射sql语句。例如我们使用部门、员工表做下面映射关系。

2.1.2 关联

2.1.2.1 多对一关联查询

在mybatisConfig.xml中添加对DeptMapper.xml的引用,看代码斜体加粗部分:

增加映射文件(EmpMapper.xml)与映射接口(EmpMapper.java),以及实体类(Emp.java) EmpMapper.xml的映射文件

EmpMapper.java接口

Emp.java实体类

大家注意看映射文件中的这部门代码

关联元素处理“有一个"类型的关系。比如,示例中,一个员工(Emp)有一个部门(Dept)。关联映射就工作于这种结果之上。

指定了目标属性,来获取值的列,属性的java类型(很多情况下MyBatis可以自己算出

来),如果需要的话还有jdbc类型,如果想覆盖或获取的结果值还需要类型控制器。

关联中不同的是需要告诉MyBatis如何加载关联。MyBatis在这方面会有两种不同的方式:

1.嵌套查询:通过执行另外一个SQL映射语句来返回预期的复杂类型。

2.嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集。

首先,来查看这个元素的属性。所有的都会看到,它和普通的只由select和resultMap属性的结果映射不同。

以上代码执行结果:

这种的查询在mybatis中成为:嵌套结果查询。

还有另一种查询方式:嵌套查询

示例2.1:

有两个查询语句:一个来加载员工,另外一个来加载部门,而且员工的结果映射描述了“selectDept"语句应该被用来加载它的dept属性。

其他所有的属性将会被自动加载,假设它们的列和属性名相匹配。

这种方式很简单,但是对于大型数据集合和列表将不会表现很好。问题就是我们熟知的“N+1查询问题"。概括地讲,N+1查询问题可以是这样引起的:

1. 执行了一个单独的SQL语句来获取结果列表(就是“+1")。

2. 对返回的每条记录,执行了一个查询语句来为每个加载细节(就是“N")。

这个问题会导致成百上千的SQL语句被执行。这通常不是期望的。

MyBatis能延迟加载这样的查询就是一个好处,因此可以分散这些语句同时运行的消耗。然而,如果加载一个列表,之后迅速迭代来访问嵌套的数据,会调用所有的延迟加载,这样的行为可能是很糟糕的。

非常重要:在嵌套查询映射中id元素扮演了非常重要的角色。应该通常指定一个或多个属性,它们可以用来唯一标识结果。实际上就是如果离开她了,有一个严重的性能问题是MyBatis仍然可以工作。选择的属性越少越好,它们可以唯一地标识结果。主键就是一个显

而易见的选择(尽管是联合主键)。

现在,上面的示例用了嵌套的形式把dept结果嵌套到emp映射,但是这种情况不利于对dept结果映射的重用。如果想重用这样的结果映射,这里给出使用这种方式的相同示例:

上面已经看到了如何处理“有一个"类型关联。但是“有很多个"是怎样的?下面这个部分就是来讨论这个主题。

1.1.

2.2 一对多关联查询(集合)

Emp对Dept是多对一,反过来从Dept来看则是一对多,实体类Dept映射一对多的示例代码:

集合嵌套结果查询:

需要在Dept添加多的一方的集合属性。另外如果达到一对多映射,必须修改映射文件:DeptMapper.xml,如下所示:

集合元素的作用几乎和关联是相同的。实际上,它们也很相似,文档的异同是多余的。所以更多关注于它们的不同。

来继续上面的示例,一个员工只有一个部门。但是部门有很多员工。在部门类中,这可以由下面这样的写法来表示:

要映射嵌套结果集合到List中,我们使用集合元素。就像关联元素一样,我们可以从连接中使用嵌套查询,或者嵌套结果。

集合的嵌套查询

来看看使用嵌套查询来为部门加载员工。

这里应该注意很多东西,但大部分代码和上面的关联元素是非常相似的。首先,应该注意使用的是集合元素。然后要注意那个新的“ofType"属性。这个属性用来区分JavaBean(或字段)属性类型和集合包含的类型来说是很重要的。所以可以读出下面这个映射:

“在org.mybatis.example.Emp类型的ArrayList中的emps的集合。"

javaType属性是不需要的,因为MyBatis在很多情况下会为"算出来。所以可以缩短成以上写法。

至此,可以猜测集合的嵌套结果是如何来工作的,因为它和关联完全相同,除了它应用了一个“ofType"属性

又一次联合了部门表和员工表,而且关注于保证特性,结果列标签的简单映射。使用以下代码测试数据:

示例2.2

查询结果:

同样,要记得id元素的重要性,如果不记得了,请阅读上面的关联部分。

同样,如果引用更长的形式,允许的结果映射的更多重用,可以使用上面提到的集合的嵌套查询。

注意:这个对所映射的内容没有深度,广度或关联和集合相联合的限制。当映射它们时应该在大脑中保留它们的表现。应用在找到最佳方法前要一直进行的单元测试和性能测试。

好在myBatis让后来可以改变想法,而不对代码造成很小(或任何)影响。

高级关联和集合映射是一个深度的主题。

2.1.3 动态SQL

MyBatis的一个强大的特性之一通常是它的动态SQL能力。如果有使用JDBC或其他相似框架的经验,就明白条件地串联SQL字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态SQL可以彻底处理这种痛苦。

通常使用动态SQL不可能是独立的一部分,MyBatis当然使用一种强大的动态SQL语言来改进这种情形,这种语言可以被用在任意映射的SQL语句中。

动态SQL元素和使用JSTL或其他相似的基于XML的文本处理器相似。在MyBatis之前的版本中,有很多的元素需要来了解。MyBatis 3大大提升了它们,现在用不到原先一半的元素就能工作了。MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。

i f

c hoose(when,otherwise)

f oreach

2.1.

3.1 if

在动态SQL中所做的最通用的事情是包含部分where字句的条件。比如:

这条语句会提供一个可选的文本查找功能。如果没有传递dname,那么所有激活的部门都会被返回。但是如果传递了dname,那么就会查找相近的dname(对于敏锐的检索,这种情况下的参数值需要包含任意的遮掩或通配符)的部门。

假若想可选地搜索ename和emp呢?首先,要改变语句的名称让它有意义。然后简单加

入另外的一个条件。

执行上面的SQL配置

2.1.

3.2 choose, when, otherwise

有时不想应用所有的条件,相反想选择很多情况下的一种。和Java中的switch语句相似,MyBatis提供choose元素。

使用上面的示例,但是现在搜索当ename提供时仅有ename条件,当dept提供时仅有dept 条件。如果二者都没提供,只返回sal 条件emps(也许是由管理员策略地选择的结果列表,而不是返回大量没有意义的随机员工结果列表)。

执行上面的SQL配置

2.1.

3.3 where, set

前面的例子已经方便地处理了一个臭名昭著的动态SQL问题。要考虑回到“if"示例后会发生什么,但是这次我们将“1 = 1"也设置成动态的条件。

如果这些条件都没有匹配上将会发生什么?这条SQL结束时就会成这样:

这会导致查询失败。如果仅仅第二个条件匹配是什么样的?这条SQL结束时就会是这样:

这个查询也会失败。这个问题不能简单的用条件来解决,如果从来没有这样写过,那么以后也不会这样来写。

MyBatis有一个简单的处理,这在90%的情况下都会有用。而在不能使用的地方,可以自定义处理方式。加上一个简单的改变,所有事情都会顺利进行:

where元素知道如果由被包含的标记返回任意内容,就仅仅插入“WHERE"。而且,如果以“AND"或“OR"开头的内容,那么就会跳过WHERE不插入。

1.1.3.4 foreach

另外一个动态SQL通用的必要操作是迭代一个集合,通常是构建在IN条件中的。比如:

foreach元素是非常强大的,它允许指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。

注意:"可以传递一个List实例或者数组作为参数对象传给MyBatis。当"这么做的时候,MyBatis会自动将它包装在一个Map中,用名称在作为键。List实例将会以“list"作为键,而数组实例将会以“array"作为键。

上例运行测试代码:

2.1.

3.4 存储过程

Mybatis可以调用数据库的存储过程,下面我们在oracle中创建一个增加部门的存储过程:

编写SQL映射文件mapper.xml

在java代码中调用存储过程

本章总结

Mybatis 查询

?级联查询

?集合映射,关联优化

?动态SQL

?存储过程的调用

任务实训部分

1:继续完善学生管理系统,对学生进行条件查询

训练技能点

1、动态的sql语句拼装

需求说明

1、在上一章项目的基础上,增加条件查询。

实现思路

1、编写配置文件。

2、为StudentMapper类编写映射文件:StudentMapper.xml。

关键代码:

修改StudentMapper.xml,添加以下代码

修改StudentService.java类,添加条件查询的方法

修改studentInfo.jsp的页面查询参数

查询到的结果显示在详细信息页面

2:对表Classes进行删除操作

训练技能点

对数据库操作

需求说明

添加班级时检查班级号是否相同,相同则不予新增。

删除班级时,验证班级是否有外键数据,有则不予删除。实现思路:

创建Classes操作的接口类ClassesMapper.java

创建映射文件:ClassesMapper.xml

添加相对应的CRUD方法及映射文件操作标签

添加Service类:ClassesService.java

编写业务实现方法

关键代码:

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页面的导航,从而能进一步发展的体系结构的观点。在这个过程中未来发

SpringMvc +Mybatis最全的配置

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

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/d912389123.html, Blog:https://www.doczj.com/doc/d912389123.html,/IBM_hoojo https://www.doczj.com/doc/d912389123.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

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

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

Spring+SpringMVC+MyBatis的整合

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) 最近在学习Spring+SpringMVC+MyBatis的整合。以下是参考网上的资料自己实践操作的详细步骤。 1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1.2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 1.3、MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由 apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis 是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和 Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口 和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

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。

SpringMvc与Mybatis整合

SpringMvc与Mybatis整合1.目的 学习SpringMvc与Mybatis怎样整合在一起。 2.环境准备 1)jdk版本:jdk1.7或jdk1.8 2)IDE:eclipse 3)Tomcat:Apache Tomcat v7.0 4)数据库:mysql及navicat for mysql 3.整合 3.1.新建一个web项目

注意:这里选择Dynamic Web Module 2.5 ,因为2.5是主流,默认在eclipse的WebContent \WEB-INF\目录下创建web.xml的,而3.0则默认没有web.xml文件 3.2.添加整合所需的jar包 注:所有的包已经放到文件jar里面了

3.3.web.xml配置 3.3.1.代码如下: SpringMvc-Mybatis index.jsp contextConfigLocation classpath:applicationContext.xml encodingFilter org.springframework.web.filter.CharacterEncodingFilter true encoding UTF-8 encodingFilter /* org.springframework.web.context.ContextLoaderListene r

spring-mybatis.xml配置文件

spring-mybatis.xml

SpringMVC+Mybatis+MySQL项目搭建

[置顶] Spring+SpringMVC+Mybatis+Mysql整合实例 标签:SpringSpringMVCMybatisMysql整合 2015-05-17 18:06 2183人阅读评论(10) 收藏举报分类: Spring(24) 版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处https://www.doczj.com/doc/d912389123.html,/evankaka 目录(?)[+]林炳文Evankaka原创作品。转载请注明出处https://www.doczj.com/doc/d912389123.html,/evankaka 本文要实现Spring+SpringMVC+Mybatis+Mysql的一个整合,实现了SpringMVC控制访问的页面,将得到的页面参数传递给Spring中的Mybatis的bean类,然后查找Mysql数据的功能,并通过JSP显示出来。建议可以先看笔者另一文章Mybatis与Spring整合创建Web项目。笔者觉得整合过程中问题比较多的还是Spring+Mybatis的整合,SpringMVC的整合还是比较简单。Spring Spring 是一个开源框架,Spring 是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean 来完成以前只可能由EJB 完成的事情。然而,

Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从Spring 中受益。简单来说,Spring 是一个轻量级的控制反转(IoC )和面向切面(AOP )的容器框架。 SpringMVC Spring MVC 属于SpringFrameWork 的后续产品,已经融合在Spring Web Flow 里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 MyBatis MyBatis 本是apache 的一个开源项目iBatis , 2010 年这个项目由apache software foundation 迁移到了google code ,并且改名为MyBatis 。MyBatis 是一个基于Java 的持久层框架。iBATIS 提供的持久层框架包括SQL Maps 和Data Access Objects (DAO )MyBatis 消除了几乎所有的JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的XML 或注解用于配置和原始映射,将接口和Java 的POJOs (Plain Old Java Objects ,普通的Java 对象)映射成数据库中的记录。 使用的版本:Mybatis-3.2.8 Spring3.2.9 SpringMVC 3.2.9

基于springmvc+spring+mybatis搭建JAVA WEB后台开发环境

JAVA WEB后台一般可分为控制层、服务层、持久层三层架构。 这里我们使用springmvc实现控制层,使用spring @service注解实现服务层,使用Apache DBCP项目的jdbc数据源,使用spring jdbc事务管理,使用mybatis实现持久层sql开发。 一、环境配置 1、pom.xml依赖配置 spring项目依赖: DBCP项目依赖:

jackson项目依赖(实现json到javabean转换) 附件上传项目依赖(可选): mybatis项目依赖: 2、web.xml配置

3、spring bean上下文配置文件springmvc-mybatis.xml配置:

其中, mvc:annotation-driven声明用于支持 MappingJackson2HttpMessageConverter ,实现controller方法参数及返回值支持json到javabean的自动转换。 context:component-scan,用于自动扫描并加载对应包下注解类的bean。multipartResolver,用于声明及配置附件上传,如果没有附件上传,可以不配置该元素。 dataSource,数据源配置,这里使用的DBCP数据源。 txManager,事务管理配置。 tx:annotation-driven,声明支持注解方式的事务管理sqlSessionFactory,配置mybatis的sqlSessionFactory

mybatis:scan,配置mybatis自动扫描对应包下的mapper xml文件。 二、示例项目开发 1、建表SQL create table user( user_id int, user_name varchar(50), user_sex char(1), address varchar(100) ); 2、java代码结构 分为controller、service、dao、data四个包。 controller为控制层,service为服务层,dao为持久层,data为javabean。 1)UserController类 package springtest.SpringMvcMybatisTest.controller;

黑马程序员mybatis教程第二天:spring和mybatis整合

spring和mybatis整合 整合思路 需要spring通过单例方式管理SqlSessionFactory。 spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成) 持久层的mapper都需要由spring进行管理。 整合环境 创建一个新的java工程(接近实际开发的工程结构) jar包: mybatis3.2.7的jar包 spring3.2.0的jar包 mybatis和spring的整合包:早期ibatis和spring整合是由spring官方提供,mybatis和spring整合由mybatis提供。 全部jar包

sqlSessionFactory 在applicationContext.xml配置sqlSessionFactory和数据源sqlSessionFactory在mybatis和spring的整合包下。

MyBatis3整合Spring3项目依赖类库jar包之间的依赖

12-5-6项目依赖 项目依赖 compile 以下是这一项目的编译依赖列表。编译和运行本应用需要这些依赖。 GroupId ArtifactId版本类型License备注org.mybatis mybatis 3.1.1jar The Apache Software License, Version 2.0No org.springframework spring-context 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework spring-core 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework spring-jdbc 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework spring-tx 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework.batch spring-batch-core 2.1.8.RELEASE jar Apache 2.0Yes test 以下是这一项目的测试依赖列表。这些依赖仅仅在编译和运行本应用中的单元测试时需要。 GroupId ArtifactId版本类型License cglib cglib 2.2.2jar ASF 2.0 com.mockrunner mockrunner-jdk1.5-j2ee1.30.4jar Mockrunner License, based on Apache Software License, version 1.1 javax.transaction transaction-api 1.1jar- junit junit 4.10jar Common Public License Version 1.0 log4j log4j 1.2.16jar The Apache Software License, Version 2.0 ognl ognl 2.6.9jar BSD License org.hsqldb hsqldb 2.2.4jar HSQLDB License, a BSD open source license org.springframework spring-test 3.1.1.RELEASE jar The Apache Software License, Version 2.0 项目传递依赖 以下是本项目的传递依赖列表。传递依赖是项目依赖的依赖: compile 以下是这一项目的编译依赖列表。编译和运行本应用需要这些依赖。 GroupId ArtifactId版本类 License 型 aopalliance aopalliance 1.0jar Public Domain com.thoughtworks.xstream xstream 1.3jar BSD style commons-logging commons-logging 1.1.1jar The Apache Software License, Version 2.0 org.codehaus.jettison jettison 1.1jar- org.springframework spring-aop 3.1.1.RELEASE jar The Apache Software License, Version 2.0 org.springframework spring-asm 3.1.1.RELEASE jar The Apache Software License, Version 2.0 org.springframework spring-beans 3.1.1.RELEASE jar The Apache Software License, Version 2.0 org.springframework spring-expression 3.1.1.RELEASE jar The Apache Software License, Version 2.0 org.springframework.batch spring-batch- 2.1.8.RELEASE jar Apache 2.0 infrastructure xpp3xpp3_min 1.1.4c jar Indiana University Extreme! Lab Software License, vesion 1.1.1-Public Domain

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis) 使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。这次,先说说三大框架整合过程。个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。实践出真知。(可通过图片水印查看博客地址)1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的 Java 开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1.2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 1.3、MyBatis

mybatis与spring的整合配置说明

mybatis是ibatis的升级版,spring也有自带mybatis的orm。所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3.0的,数据库是mysql)。下面介绍3中方式 1,只是用mybatis3。 2,使用mybatis3+spring3(使用mybatis的SqlSessionFactory )。 3,使用ibatis2.3+spring(使用spring自带的ibatis) spring的orm包中只有ibatis,没有mybatis。而mybatis和ibatis还是有些区别的,比如配置文件属性不同。 第一种方式(只使用mybatis): 1)jar包: cglib-2.2.jar asm-3.1.jar mysql-connector-java-3.1.13.jar mybatis-3.0.5.jar junit.jar 2)mybatis配置文件: [html]view plaincopy 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

Spring和Mybatis整合英文文档翻译

Introduction to MyBatis-Spring MyBatis-Spring介绍 MyBatis-Spring helps you integrate your MyBatis code seamlessly with Spring. Using the classes in this library, Spring will load the necessary MyBatis factory and session classes for you. This library also provides an easy way to inject MyBatis data mappers into your service beans. Finally, MyBatis-Spring will handle transactions and translate MyBatis exceptions into Spring DataAccessExceptions. MyBatis-Spring帮助我们将MyBatis代码无缝的和Spring整合起来。通过使用这个类库中类,Spring将为我们加载MyBatis工厂以及session相关的类。这个类库也提供了一种简单的方式注入MyBatis数据映射器到我们的业务Beans中去。最后,MyBatis-Spring将会处理事务以及转换MyBatis的异常为Spring的DataAccessExceptions. Quick Setup 快速开始 To use MyBatis with Spring you need at least two things defined in the Spring application context: an SqlSessionFactory and at least one data mapper class. In MyBatis-Spring, an SqlSessionFactoryBean is used to create an SqlSessionFactory. To configure the factory bean, put the following in the Spring XML configuration file: 为了能够使用MyBatis和Spring,我们至少需要在Spring 应用上下文中定义两个东西:一个SqlSessionFactory和至少一个数据映射器类。在MyBatis-Spring中,SqlSessionFactoryBean 被用作创建SqlSessionFactory。为了能够配置这个工厂Bean,需要将如下代码放入Spring的XML配置文件: Notice that the SqlSessionFactory requires a DataSource. This can be any DataSource and should be configured just like any other Spring database connection. 需要注意的是这个SqlSessionFactory需要一个DataSource。这个可DataSource可以是任何DataSource并且应该像其他任何Spring 数据库连接一样被配置。 Assume you have a data mapper class defined like the following: 假设我们已经定义了一个数据映射器类,该类的定义方式如下:

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