如果应用中涉及到多数据源问题,例如一个主库,另外需要访问其他库中少量表,可以这样配置:
数据源配置:
<bean id="umpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://${ump.jdbc.host}:${ump.jdbc.port}/${ump.jdbc.database}?useUnicode=true&characterEncoding=GBK"/>
<property name="username" value="${ump.jdbc.user}"/>
<property name="password" value="${ump.jdbc.password}"/>
</bean>
<bean id="hm-dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://${hm.jdbc.host}:${hm.jdbc.port}/${hm.jdbc.database}?useUnicode=true&characterEncoding=GBK"/>
<property name="username" value="${hm.jdbc.user}"/>
<property name="password" value="${hm.jdbc.password}"/>
</bean>
共用一个SqlMapClient:
<bean id="sqlMapClient" class="cn.org.rapid_framework.ibatis.spring.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:sqlmap-config.xml</value>
</property>
<property name="mappingLocations">
<list>
<value>classpath*:/com/teamsun/**/dao/*.xml</value>
</list>
</property>
<property name="dataSource" ref="umpDataSource"/>
<!-- 指定数据库分页方言Dialect, 其它方言:OracleDialect,SQLServerDialect,SybaseDialect,DB2Dialect,PostgreSQLDialect,MySQLDialect,DerbyDialect,HSQLDialect-->
<property name="sqlExecutor">
<bean class="cn.org.rapid_framework.ibatis.sqlmap.engine.execution.LimitSqlExecutor">
<property name="dialect">
<bean class="cn.org.rapid_framework.jdbc.dialect.MySQLDialect"/>
</property>
</bean>
</property>
</bean>
访问主库的Dao配置,没有指定DataSource,共享SqlMapClient中的DataSource:
<bean id="upgradeinfoDao" class="com.xxx.dao.UpgradeinfoSpringDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
访问其他数据库的Dao配置,明确指定具体的dataSource:
<bean id="hostsDao" class="com.teamsun.hm.dao.HostsSpringDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="dataSource" ref="hm-dataSource"/>
</bean>