Mybatis MapperScannerConfigurer配置问题总结

在进行springMVC和mybatis整合时,我们首先需要配置SqlSessionFactoryBean,为整合应用提供SqlSession对象资源。之后我们需要根据指定的Mapper接口生成Bean实例,这就需要我们配置MapperFactoryBean,其作用是根据Mapper接口获取我们想要的Mapper对象,它封装了原有的session.getMapper()功能的实现。

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

--SqlSessionFactoryBean对象,用于提供SqlSession

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

当我们需要扫描的对象是一个单一的mapper时,我们通常采用如下扫描配置:

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


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


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

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


但是在进行多配置源的配置时,有可能出现错误,

### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driverClassName}' 

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) .......

这时可以采用把之前的MapperFactoryBean的配置注释掉,换成如下配置依然执行通过:
Mybaits 使用多数据库源错误 --MapperScannerConfigurer配置 - linux,dev - 博客园 http://www.cnblogs.com/huapox/p/3516399.html所提供的方法进行配置

但是在我的程序中仍旧出现错误。

而在Mybatis MapperScannerConfigurer配置 Mybatis MapperScannerConfigurer配置的文章中指出在这里无需指定引用SqlSessionFactory,因为MapperScannerConfigurer在创建映射器时会通过自动装配的方式来引用。

此时错误可消除。

把之前的MapperFactoryBean的配置注释掉,换成如下配置依然执行通过:
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值