Mybatis注意点

Mybatis 集成spring时,无法加载外部properties的值:

main.properties:

main.db.vtms3000.sIp=127.0.0.1
main.db.vtms3000.sPort=3306
main.db.vtms3000.sUsername=mysql
main.db.vtms3000.sPassword=password
 

spring加载配置文件:

 <bean id="propertyConfigurer"  
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    <property name="locations">  
        <list>  
  			<value>WEB-INF\main.properties</value>
        </list>  
    </property>  
    <property name="fileEncoding">
    	<value>UTF-8</value>
   	</property>
  </bean>
 
  <bean id="developDataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://${main.db.vtms3000.sIp}:${main.db.vtms3000.sPort}/vtms3000" />  
    <property name="username" value="${main.db.vtms3000.sUsername}" />
    <property name="password" value="${main.db.vtms3000.sPassword}" />
    <property name="initialSize" value="20"/>  
    <property name="maxActive" value="100"/>  
    <property name="maxIdle" value="30"/>  
    <property name="maxWait" value="1000"/>  

	<property name="testOnBorrow" value="true"/>  
    <property name="testWhileIdle" value="true"/>  
    <property name="testOnReturn" value="true"/> 
    <property name="minEvictableIdleTimeMillis" value="300000" />  
    <property name="timeBetweenEvictionRunsMillis" value="120000" /> 
    <property name="validationQuery" value="select 1 from dual" />   
  </bean>
 	

  <!-- SqlSessionFactory -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="developDataSource" />
    <property name="configLocation" value="/WEB-INF/mybatis_config.xml" />
  </bean>
  <!-- ScanMapperFiles -->
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.dahuazwan.vtms.mapper"/>  
    <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
  </bean>


</beans>

说明:

   ${main.db.vtms3000.sIp}、${main.db.vtms3000.sPort}等值从属性文件main.properties获取,但是在实际执行时,取发现无法取到 ${main.db.vtms3000.sIp}的值,抛出异常

Caused by: java.lang.NumberFormatException: For input string: "${main.db.vtms3000.sPort}"

   说明无法从main.properties中得到${main.db.vtms3000.sPort}对应的端口号

原因是spring + mybatis配置存在中冲突,只要注释掉<property name="sqlSessionFactory" ref="sqlSessionFactory"/> 即可:

  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.dahuazwan.vtms.mapper"/>  
    <!--  
    <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
    -->
  </bean>
   

猜你喜欢

转载自huangrongyou.iteye.com/blog/1676152
今日推荐