码迷,mamicode.com
首页 > 移动开发 > 详细

SprignMVC myBatis整合(一) 基于MapperFactoryBean

时间:2015-05-18 16:58:22      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

其提供了与整合相关的API:

SqlSessionFactoryBean

--为整合应用提供SqlSession对象资源

MapperFactoryBean

--根据指定的Mapper接口生成Bean实例

MapperScannerConfigurer

--根据指定包批量扫描Mapper接口并生成实例

 

SqlSessionFactoryBean:

在单独使用MyBatis时,所有操作都是围绕SqlSession展开的,SqlSession是通过SqlSessionFactory获取的,SqlSessionFactory又是通过SqlSessionFactoryBuilder创建生成的。

 在SpringMvc+MyBatis整合时,同样需要SqlSession。SqlSessionFactoryBean这个组件通过原来的SqlSessionFactoryBuilder生成SqlSessionFactory对象,为整合应用提供SqlSession对象。

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
		<property name="username" value="jsd1403" />
		<property name="password" value="root" />
	</bean>

	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="myDataSource" />
		<property name="mapperLocations" value="classpath:com/lydia/entity/*.xml" />
	</bean>

MapperFactoryBean:

其作用是根据Mapper接口获取我们想要的Mapper对象,它封装了原有的session.getMapper()功能的实现。

在定义MapperFactoryBean时,需要注入一下两个属性:

--SqlSessionFactoryBean对象,用于提供SqlSession

--要返回Mapper对象的Mapper接口

 

MapperFactoryBean配置如下:

<!-- 方法一:定义mapper -->
	<bean id="deptMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.lydia.entity.DeptMapper"></property>
		<!-- 指定SqlSessionFactoryBean对象 -->
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>

MapperScannerConfigurer配置使用:

 

注意:使用MapperFactoryBean时,当有一个Mapper(可以理解为表对应的映射文件)就MapperFactoryBean,当mapper少数可以通过applicationContext配置文件,通过id获取。

如果大量的mapper,需要使用mybatis-spring.jar通过的MapperScannerConfigurer组件,通过这个组件可以自动扫描指定包下的各个Mapper接口,并注册对应的MapperFactoryBean对象。

 

把之前的MapperFactoryBean的配置注释掉,换成如下配置依然执行通过:

<!--方法2:
         可以把扫描到的Mapper接口变成Mapper对象-->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!--指定要扫描包: 多个包用逗号隔开 -->
		<property name="basePackage" value="com.lydia,com.tarena" />
		<!--指定sqlSessionFactory -->
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>

 注意:上面sqlSessionFactory属性也可以不用指定,默认会以Autowired方式注入。

 

   如果指定的某个包下并不完全是我们定义的Mapper接口,我们也可以通过自定义注解的方式指定生成MapperFactoryBean对象。

配置如下:

<!--方法3:
    只要Mapper类前面加上@MyBatisRepository 这个自己指定的注解就OK-->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.lydia" />
		<property name="annotationClass" value="com.lydia.annotation.MyBatisRepository" />
	</bean>
自定义注解:MyBatisRepository.java 
public @interface MyBatisRepository {
}


下面也给大家一个思路、 先休息一下 

重写一下MapperFactoryBean 下面的文档会一起和大家研究一下。

SprignMVC myBatis整合(一) 基于MapperFactoryBean

标签:

原文地址:http://my.oschina.net/superman158/blog/416268

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!