前言
MyBatis与Spring整合所需JAR包主要包括:
Spring框架所需的JAR包、 MyBatis框架所需的JAR包、MyBatis与Spring整合的中间JAR、数据库驱动JAR包,以及数据源所需的JAR包。
MapperFactoryBean是MyBatis-Spring团队提供的一个用于根据Mapper接口生成Mapper对象的类,通过MapperFactoryBean可以配置接口文件以及注入SqlSessionfactory,从而完成一个Bean的实例化。
MapperScannerConfigurer是MyBatis-Spring团队提供的一种用于以自动扫描形式来配置MyBatis中映射器的类,可以通过配置包路径来自动扫描包接口生成映射器,这使得开发人员可以在编写很少代码的情况下,完成对映射器的配置,从而提高开发效率。
由于Spring MVC是Spring框架中的一个模块,所以Spring MVC与Spring之间不存在整合的问题,只要引入相应JAR包就可以直接使用。因此SSM框架的整合就只涉及到了Spring与MyBatis的整合,以及Spring MVC与MyBatis的整合。
Spring与MyBatis框架的整合时,通过Spring实例化Bean,然后调用实例对象中的查询方法来执行MyBatis映射文件中的SQL语句的,如果能够正确查询出数据库中的数据,那么就可以认为Spring与MyBatis框架整合成功。
加入Spring MVC后,如果可以通过前台页面来执行查询方法,并且查询出的数据能够在页面中正确显示,那么就可以认为三大框架整合成功。
SSM框架整合时,Spring配置文件中配置信息主要包括
(1)读取数据库常量配置文件db.properties的配置信息;
(2)数据源的配置信息;
(3)事务管理器的配置信息;
(4)开启事务注解的配置;
(5)MyBatis工厂SqlSessionFactory的配置信息;
(6)mapper文件扫描器的配置;
(7)扫描Service层的配置。
在MyBatis+Spring的项目中,事务是由Spring来管理的。
MyBatis-Spring团队提供了一种自动扫描的形式来配置MyBatis中的映射器——采用MapperScannerConfigurer类。
在进行Spring与MyBatis整合时
Spring框架所需要准备的JAR包共10个
其中包括:4个核心模块JAR,AOP开发使用的JAR,JDBC和事务的JAR。
Dao层开发可以使用传统的DAO方式的开发整合,以及Mapper接口方式的开发整合。
可以使用mybatis-spring包中所提供的SqlSessionTemplate类或SqlSessionDaoSupport类来实现向DAO实现类中注入SqlSessionFactory。
SSM框架整合主要是Spring与Mybatis的整合,以及SpringMVC与Mybatis的整合。
为了避免Spring配置文件中的信息过于臃肿,通常会将Spring配置文件中的信息按照业务功能的不同分散在多个配置文件中。在整合项目中,db.properties文件主要用于数据库常量的配置。
Spring与MyBatis框架的整合时,可以通过Spring实例化Bean,然后调用实例对象中的查询方法来执行MyBatis映射文件中的SQL语句,如果能够正确查询出数据库中的数据,就可以认为Spring与MyBatis框架整合成功。
SSM框架整合配置文件spring-servlet.xml示例
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!--组件扫描--> <context:component-scan base-package="action" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!--启动注解--> <mvc:annotation-driven/> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 配置mybatis:配置SqlSessionFactory --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis_config.xml"></property> </bean> <!-- Spring和MyBatis整合:配置扫描Dao接口的包,动态实现Dao接口,注入到Spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 给出需要扫描的Dao接口包 ,set注入--> <property name="basePackage" value="dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> </beans>