Spring+SpringMVC+MyBatis整合应用
1、Spring与MyBatis整合
Spring与MyBatis整合需要引入一个mybatis-spring.jar 文件包,此整合包由MyBatis提供,此包提供以下与整合相关的API
1)SqlSessionFactoryBean
为整合应用提供SqlSession对象,在spring.xml中配置
<!-- 定义SqlSessionFactoryBean组件 -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定数据源 -->
<property name="dataSource" ref="ds"/>
<!-- 指定映射文件 -->
<property name="mapperLocations" value="classpath:com/xms/entity/mapper/*.xml"/>
</bean>
2)MapperScannerConfigurer
根据指定包批量扫描Mapper接口生成对应的实例
在定义MapperScannerConfigurer时,只需要指定一个扫描包即可,basePackage用于指定Mapper接口所在的包,在这个包及其子包中的Mapper接口都将被扫描到,生成对应的对象,多个包之间可以使用逗号或分号进行分割
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定扫描包 -->
<property name="basePackage" value=""/>
<!-- 指定SqlSessionFactory -->
<property name="sqlSessionFactory" ref=""/>
注意:sqlSessionFactory属性可以不用指定,会以autowired方式自动注入
</bean>
如果指定某个包并不完全是我们定义的Mapper接口,此时可以使用MapperScannerConfigurer的两个属性缩小接口实例化的范围,一个annotationClass,一个是markerInterface
annotationClass:用于指定一个注解标记,当指定了注解标记属性时,MapperScannerConfigurer将只实例化使用了annotationClass注解标记的接口
markerInterface:用于指定一个接口,当指定了接口属性时,MapperScannerConfigurer将只实例化继承自markerInterface接口的接口
2、Spring+Spring MVC+MyBatis整合应用
1)搭建Spring,SpringMVC和MyBatis环境
* 创建一个WEB工程
* 添加MyBatis相关技术环境
引入数据库驱动包和DBCP连接池开发包
引入MyBatis开发包
* 添加Spring,SpringMVC相关技术环境
引入Spring ioc,jdbc,tx,aop开发包
引入Spring web,webmvc开发包
在src下添加spring.xml配置文件
在web.xml中配置DispatcherServlet前端控制器和中文乱码处理过滤器CharacterEncodingFilter
引入MyBatis和Spring整合开发包mybatis-spring.jar
2)基于MapperScannerConfigurer方式整合MyBatis
*根据数据表编写实体类
*编写Mapper映射文件,在XML中添加SQL操作的定义
*编写Mapper接口,定义SQL操作方法
*在Spring配置文件中定义以下Bean组件
DataSource、SqlSessionFactoryBean、MapperScannerConfigurer
3)编写和配置SpringMVC的主要组件(Controller,handlerMapping,ViewResolver)
*编写Controller和请求处理方法
*配置<mvc:annotation-driven/>,支持@RequestMapping
*配置Controller组件
开启注解扫描,将Controller组件扫描到Spring容器中
需要DAO时采用注入方式
在请求处理方法上使用@RequestMapping指定对应请求
4)编写JSP视图组件,利用JSTL标签和EL表达式显示数据
引入JSTL开发包(jstl.jar,standard.jar)