Mybatis MapperScannerConfigurer配置问题总结

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

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

--SqlSessionFactoryBean对象,用于提供SqlSession

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

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


	
		
		
		
	


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


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

	
	
		
		
		
		
	

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

### 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的配置注释掉,换成如下配置依然执行通过:

你可能感兴趣的:(Spring)