MyBatis与Spring整合

Posted 阿风的JAVA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis与Spring整合相关的知识,希望对你有一定的参考价值。

MyBatis与Spring整合

  • 执行原理:改整合方式需要对MyBatis的执行步骤有一定了解,还不太明白的童鞋请翻看之前的Mybati架构与流程文章

  • 整合原理:

  • (1)让原来Mybatis的管理的数据库连接池,以及SqSessionlFactory的工厂交给Spring来管理,

    (2)然后通过手动或者配置自动的方式把SqSessionlFactory注入到Dao层的对象中,

    (3)最后由Dao层对象通过SqSessionlFactory注入对象

  • 整合方式:

    1、传统dao的开发方式

    通过spring的依赖注入,把SqSessionlFactory注入得到dao层,然后通过SqSessionlFactory进行操作。

    img

    2、使用mapper代理形式开发方式

    这种方式也是手动的指定。除了要手动指定SqSessionlFactory外,还需要指定Mapper的映射类

    MyBatis与Spring整合
    img

    3、使用扫描包配置mapper代理。

    这种方式即通过扫描包的方式和自动注入SqSessionlFactory相结合。 这种是最常用的方式。

    MyBatis与Spring整合
    img

整合步骤:

1,导入依赖(MyBatis与Spring整合的依赖包 mybatis-spring)下面是ssm的整合的pom配置
<properties>  
       <!-- spring版本号 -->  
       <spring.version>4.3.0.RELEASE</spring.version>  
       <!-- mybatis版本号 -->  
       <mybatis.version>3.2.6</mybatis.version>  
       <!-- log4j日志文件管理包版本 -->  
       <slf4j.version>1.7.7</slf4j.version>  
       <log4j.version>1.2.17</log4j.version>  
   </properties>  
   <dependencies>  
       <dependency>  
           <groupId>junit</groupId>  
           <artifactId>junit</artifactId>  
           <version>4.11</version>  
           <!-- 表示开发的时候引入,发布的时候不会加载此包 -->  
           <scope>test</scope>  
       </dependency>  
       <!-- spring核心包 -->  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-core</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-web</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-oxm</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-tx</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-jdbc</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-webmvc</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-aop</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-context-support</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-test</artifactId>  
           <version>${spring.version}</version>  
       </dependency>  
       <!-- mybatis核心包 -->  
       <dependency>  
           <groupId>org.mybatis</groupId>  
           <artifactId>mybatis</artifactId>  
           <version>${mybatis.version}</version>  
       </dependency>  
       <!-- mybatis/spring包 -->  
       <dependency>  
           <groupId>org.mybatis</groupId>  
           <artifactId>mybatis-spring</artifactId>  
           <version>1.2.2</version>  
       </dependency>  
       <!-- 导入java ee jar 包 -->  
       <dependency>  
           <groupId>javax</groupId>  
           <artifactId>javaee-api</artifactId>  
           <version>7.0</version>  
       </dependency>  
       <!-- 导入mysql数据库链接jar包 -->  
       <dependency>  
           <groupId>mysql</groupId>  
           <artifactId>mysql-connector-java</artifactId>  
           <version>5.1.30</version>  
       </dependency>  
       <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->  
       <dependency>  
           <groupId>commons-dbcp</groupId>  
           <artifactId>commons-dbcp</artifactId>  
           <version>1.2.2</version>  
       </dependency>  
       <!-- JSTL标签类 -->  
       <dependency>  
           <groupId>jstl</groupId>  
           <artifactId>jstl</artifactId>  
           <version>1.2</version>  
       </dependency>  
       <!-- 日志文件管理包 -->  
       <!-- log start -->  
       <dependency>  
           <groupId>log4j</groupId>  
           <artifactId>log4j</artifactId>  
           <version>${log4j.version}</version>  
       </dependency>  
       <!-- 格式化对象,方便输出日志 -->  
       <dependency>  
           <groupId>com.alibaba</groupId>  
           <artifactId>fastjson</artifactId>  
           <version>1.1.41</version>  
       </dependency>  
       <dependency>  
           <groupId>org.slf4j</groupId>  
           <artifactId>slf4j-api</artifactId>  
           <version>${slf4j.version}</version>  
       </dependency>  
       <dependency>  
           <groupId>org.slf4j</groupId>  
           <artifactId>slf4j-log4j12</artifactId>  
           <version>${slf4j.version}</version>  
       </dependency>  
       <!-- log end -->  
       <!-- 映入JSON -->  
       <dependency>  
           <groupId>org.codehaus.jackson</groupId>  
           <artifactId>jackson-mapper-asl</artifactId>  
           <version>1.9.13</version>  
       </dependency>  
       <!-- 上传组件包 -->  
       <dependency>  
           <groupId>commons-fileupload</groupId>  
           <artifactId>commons-fileupload</artifactId>  
           <version>1.3.1</version>  
       </dependency>  
       <dependency>  
           <groupId>commons-io</groupId>  
           <artifactId>commons-io</artifactId>  
           <version>2.4</version>  
       </dependency>  
       <dependency>  
           <groupId>commons-codec</groupId>  
           <artifactId>commons-codec</artifactId>  
           <version>1.9</version>  
       </dependency>  
   </dependencies>  
2,选择整合方式,进行代码配置以及配置文件的书写。这里只提供第三种的方式的书写。

spring-mybatis.xml

<?xml version="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:context="http://www.springframework.org/schema/context"  
   xmlns:mvc="http://www.springframework.org/schema/mvc"  
   xsi:schemaLocation="http://www.springframework.org/schema/beans    
                       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                       http://www.springframework.org/schema/context    
                       http://www.springframework.org/schema/context/spring-context-3.1.xsd    
                       http://www.springframework.org/schema/mvc    
                       http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"
>
 
   <!-- 自动扫描 -->  
   <context:component-scan base-package="com.lifeibai.mybatis" />  
   <!-- 引入配置文件 -->  
   <bean id="propertyConfigurer"  
       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 
       <property name="location" value="classpath:jdbc.properties" />  
   </bean>  
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
       destroy-method="close">
 
       <property name="driverClassName" value="${driver}" />  
       <property name="url" value="${url}" />  
       <property name="username" value="${username}" />  
       <property name="password" value="${password}" />  
       <!-- 初始化连接大小 -->  
       <property name="initialSize" value="${initialSize}"></property>  
       <!-- 连接池最大数量 -->  
       <property name="maxActive" value="${maxActive}"></property>  
       <!-- 连接池最大空闲 -->  
       <property name="maxIdle" value="${maxIdle}"></property>  
       <!-- 连接池最小空闲 -->  
       <property name="minIdle" value="${minIdle}"></property>  
       <!-- 获取连接最大等待时间 -->  
       <property name="maxWait" value="${maxWait}"></property>  
   </bean>  
   <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
       <property name="dataSource" ref="dataSource" />  
       <!-- 自动扫描mapping.xml文件  配置这个在配置自动扫描包Mapper 可以让mapper与xml分离,否则的话,两者要在同一个包中-->
       <!-- <property name="mapperLocations" value="classpath:com/cn/hnust/mapping/*.xml"></property>  -->  
   </bean>  
   <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
       <property name="basePackage" value="om.lifeibai.mybatis.mapper" />    
       <!-- 这个属性可以不配置,因为有个默认值就是sqlSessionFactory -->
       <!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  -->
   </bean>  
</beans>  


文章如有错误,请您一定指出,感谢之至!

如果你有不同的见解,欢迎留言,或者加我QQ986320270

图片可能来源于网络,如有侵权请告知。

最后:关注一下呗


长按二维码识别关注


以上是关于MyBatis与Spring整合的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis与Spring的整合(Eclipse版本和IDEA版本)

Spring与MyBatis整合

spring 与mybatis 整合总结

mybatis与spring的整合

Mybatis(使用)与Spring整合

Mybatis与Spring的整合