但是如果要配置自动扫描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>
2011-11-19 20: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>