mybatis-spring集成:配置多数据库源中遇到的问题
但是如果要配置自动扫描mapper文件,可能会遇到一点儿问题
只有一个数据源时,只需要指定包就可以了,比如
< bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="...*" />
< /bean>
注意,没有必要去指定SqlSessionFactory或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。但是,如果你使用了一个以上的DataSource(因此,也是多个的 SqlSessionFactory),那么自动装配可能会失效。这种情况下,你可以使用sqlSessionFactory或 sqlSessionTemplate属性来设置正确的工厂/模板。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="..." />
<property name="sqlSessionFactory" ref="fsasSqlSessionFactory"></property>
< /bean>
当这样配置时,如果数据源DataSource的属性中使用了properties属性,那么就会报异常:
<!-- 配置dbcp连接池,注意要加入它的第三包jar包 -->
< bean id="fsasDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${fsas.url}" />
<property name="username" value="${fsas.username}" />
<property name="password" value="${fsas.password}" />
< /bean>
2013-3-28 1:37:57 WARN [com.mchange.v2.c3p0.DriverManagerDataSource:107] - Could not load driverClass ${jdbc.driverClass}
java.lang.ClassNotFoundException: ${jdbc.driverClass}
查看官方英文文档发现,有专门提醒:
<!-- 扫描映射器,自动创建 -->
< bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="..." />
<property name="sqlSessionTemplateBeanName" value="fsasSqlSession" />
< /bean>