pgup12 发表于 2016-11-24 08:26:44

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>
 
 
页: [1]
查看完整版本: Mybatis注意点