環(huán)境:sPRing3.1.1+mybatis3.2.8+mybatis-spring1.2.3
今天整合了SpringMVC + MyBatis,發(fā)現(xiàn)了一個問題,在這里做個記錄,各位如果遇到相同的問題,可以參考下。
<!-- 引入jdbc配置文件 --> <context:property-placeholder location="classpath:prop/jdbc.properties" />引入文件時出現(xiàn)下面的錯誤,提示dataSource中的使用資源文件中key對應的value值沒有引入進來。
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driver}'] with root causejava.lang.ClassNotFoundException: ${jdbc.driver}首先確認jdbc.properties引入的路徑沒有問題。其次往下看。
解決案:
xml 頭部將 default-autowire=”byName”去掉。
修改SqlsessionFactory。
將
<!-- 創(chuàng)建SqlSessionFactory,同時指定數(shù)據(jù)源 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自動掃描entity目錄, 省掉Configuration.xml里的手工配置 --> <property name="mapperLocations" value="classpath*:maper/*.map.xml" /></bean> <!-- DAO接口所在包名,Spring會自動查找其下的類 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.com.mars.dao" /></bean>改成:
<!-- 創(chuàng)建SqlSessionFactory,同時指定數(shù)據(jù)源 --> <bean id="MySQLSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自動掃描entity目錄, 省掉Configuration.xml里的手工配置 --> <property name="mapperLocations" value="classpath*:maper/*.map.xml" /></bean> <!-- DAO接口所在包名,Spring會自動查找其下的類 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.com.mars.dao" /> <property name="sqlSessionFactoryBeanName" value="mySqlSessionFactory" /></bean>這樣,dataSource中就可以正常使用.properties文件中的key-value了。 附:完整的配置文件,這個文件是用來完成spring和mybatis的整合的xml。
感謝熱心的前輩技術分享!本文如有不正,請指出。
參考資料: http://www.oschina.net/question/188964_32305
新聞熱點
疑難解答