Spring与Mybatis的整合

Spring与Mybatis的整合

一、在整合这两个框架之前需要了解的知识

1.Spring

       Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。两个重要模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。

控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。

容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。

2.MyBatis

         MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。

MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

3. mybatis-spring版本支持的mybatis和spring的情况

        在整合之前除了要了解前面的两个知识点之外,还需要知道mybatis-spring版本支持的mybatis和spring的情况。我曾经因为版本支持的问题,花掉了我半天的时间,所以我深刻地感受到对于一个知识不系统的看书学习,光是凭经验和积累,有时也是害人的。

       因而,我建议先看一下mybatis官网上的介绍,网址如下:

http://www.mybatis.org/spring/zh/

先将网址上我以为要了解的摘抄如下:

What isMyBatis-Spring?

        MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。

Requirements

        在开始使用MyBatis-Spring 的整合之前,很重要的一点是,你要熟悉 Spring 和 MyBatis 这两个框架还有和它们有关的术语,本手册中不会提供二者的基本内容,安装和配置教程。

        MyBatis-Spring要求Java5及以上版本还有下面列出的MyBatis和Spring版本:

MyBatis-Spring

MyBatis

Spring

1.0.0 或 1.0.1

3.0.1 到 3.0.5

3.0.0 或以上

1.0.2

3.0.6

3.0.0 或以上

1.1.0

3.1.0 或以上

3.0.0 或以上

      

       上面的表还没说清楚,进一步可以参考下面的网址:   

http://mvnrepository.com/artifact/org.mybatis/mybatis-spring

        这个网址是maven仓库,上面可以找到mybatis-spring上的jar包,并且说明对应支持的mybatis版本和spring的版本。下面截取几个图显示其支持的情况。






 

       现在经常用的已经到了1.3.1,04 三月 2017年3月4日已经发布了1.3.2-SNAPSHOT,是个不稳定版,看上面的图,目前用的比较多的是1.3.0,本次就用这个版本。

       MyBatis-Spring1.3.0支持mybatis和spring的情况。







       从图中可以看出,其支持mybatis 3.4.0以上,支持spring4.2.5以上。

       另外,上面两个网站都告诉了:如果使用 Maven,在 pom.xml 中加入下面的代码即可:

<dependency><groupId>org.mybatis</groupId>

  <artifactId>mybatis-spring</artifactId>

  <version>x.x.x</version>

</dependency>

       比如:本次使用mybatis-spring 1.3.0,就将上面表格中x.x.x换成1.3.0。

 

二、整合步骤

        由于会附上源代码,下面的步骤将比较简单。

       1.使用MyEclipse建立一个Maven的WEB项目,弄一个名字:paperV01,如果不会,推荐看一篇博文,地址为:

http://blog.csdn.net/haishu_zheng/article/details/51490299

       2.配置pom.xml

       使用Maven来管理项目的好处,就是不需要自己去导入jar包,但我们要知道需要导入哪些jar包。以上建立项目后,会自动生成一个pom.xml文件,我们接下来的任务就是配置这个文件。

       我们要用到的软件有:mybatis、spring、单元测试,JDBC驱动程序等等,需要在pom.xml中配置,让Maven去帮我们下载相应的jar包。

       3.在mysql建立数据库

       数据库的名称为:db_rbac,在建两个表,分别为:sys_user、sys_role

       4.完成实体类、DAO接口、服务层接口、服务实现层

       完成的结构图如下:







       5.xml映射文件

       6.Spring配置文件----ApplicationContext.xml

       在MyBatis中,要连接数据库,还要创建session 工厂,其中,可以使用SqlSessionFactoryBuilder来创建session 工厂。而在MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代。这个bean可以通过一个线程安全的 SqlSession 来注入,基于Spring的事务配置来自动提交、回滚、关闭session。

在大多数情况下MapperFactoryBean, 将会在 bean 中注入所需要的映射器。

为了完成选择数据源和映射器的注入,也需要一个配置文件,取名为:ApplicationContext.xml,该文件的配置与注释如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

	<!--引入jdbc.properties属性文件 -->
	<context:property-placeholderlocation="classpath:jdbc.properties"/>

	<!--定义一个jdbc数据源,创建一个驱动管理数据源的bean -->
	<bean
		id="jdbcDataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property
			name="driverClassName"
			value="${jdbc.driver}"/>
		<property
			name="url"
			value="${jdbc.url}"/>
		<property
			name="username"
			value="${jdbc.username}"/>
		<property
			name="password"
			value="${jdbc.password}"/>
	</bean>

	<!--创建一个sql会话工厂bean,指定数据源jdbcDataSource -->
	<bean
		id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<!--指定数据源 -->
		<property
			name="dataSource"
			ref="jdbcDataSource"/>
		<!--定位Mybatis的配置文件 -->
		<property
			name="configLocation"
			value="classpath:config.xml"/>
	</bean>

	<!--MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。
	这个类可以让你直接注入数据映射器接口到你的 service 层 bean 中。
	当使用映射器时,你仅仅如调用你的 DAO 一样调用它们就可以了,但是你不需要编
	写任何 DAO 实现的代码,因为MyBatis-Spring 将会为你创建代理。
	MapperFactoryBean创建的代理类实现了UserMapper接口,并且注入到应用程序中。
	因为代理创建在运行时环境中(Runtime,译者注) ,那么指定的映射器必须是一个接口,而不是一个具体的实现类。 -->
	<bean
		id="userMapper"
		class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property
			name="mapperInterface"
			value="com.solo.base.mapper.UserMapper"/>
		<property
			name="sqlSessionFactory"
			ref="sqlSessionFactory"/>
	</bean>
	
	<!--上面的映射器只有一个,如果多个或很多呢?可以使用一个MapperScannerConfigurer,它将会查找类路径下的映射器
	并自动将它们创建成MapperFactoryBean,这样就没有必要在 Spring 的 XML 配置文件中注册所有的映射器。
	basePackage属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径。
	每个映射器将会在指定的包路径中递归地被搜索到。
	要创建MapperScannerConfigurer,可以在 Spring 的配置中添加如下代码来代替上面的代码:  -->
	<!--<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.solo.base.mapper"></property>		
	</bean> -->
	
</beans>



       7.MyBatis的配置文件------config.xml

       8.编写单元测试

       源码下载地址:

http://download.csdn.net/download/wxjwhqwy/10182550

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值