一个项目配置多个数据源进行数据操作,简单方便。

首先配置 spring 加载文件 这里配置了两个数据源(需要几个配几个)。



<!-- 数据源1 -->
<bean id="dataSource1" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="10" />
<property name="minIdle" value="20" />
<property name="maxActive" value="30" />
<property name="maxWait" value="60000" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="${jdbc.testSql}" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="20" />
<property name="filters" value="stat" />
</bean>
<!-- 数据源2 -->
<bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc2.driver}" />
<property name="url" value="${jdbc2.url}" />
<property name="username" value="${jdbc2.username}" />
<property name="password" value="${jdbc2.password}" />
<property name="initialSize" value="10" />
<property name="minIdle" value="20" />
<property name="maxActive" value="30" />
<property name="maxWait" value="60000" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="${jdbc2.testSql}" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="20" />
<property name="filters" value="stat" />
</bean>


<!-- 事务  随便搞 -->
<tx:annotation-driven transaction-manager="transactionManager2"
proxy-target-class="true" />
<bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource2" />
</bean> 


<!-- From  数据源2的 sqlSessionFactory-->
<bean id="serviceSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="mapperLocations">
<array>
<!-- 加载mybatis具体映射 -->
<value>classpath*:mappings/**/*.xml</value>
</array>
</property>
<!-- 映射别名 -->
<property name="typeAliasesPackage" value="com.jsonmedia.modules"/>
        <property name="typeAliasesSuperType" value="com.jsonmedia.common.persistence.BaseEntity"/>
<!-- 数据源 -->
<property name="dataSource" ref="dataSource1"></property>
<!-- 加载mybatis 核心文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>

<!-- 配置数据源1 mapper-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="serviceSessionFactory1"></property>
<property name="basePackage" value="com.jsonmedia.modules"></property>
</bean>


<!-- To  数据源2的 sqlSessionFactory-->
<bean id="serviceSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="mapperLocations">
<array>
<value>classpath*:contract/*.xml</value>
</array>
</property>
<property name="typeAliasesPackage" value="Contra"/>
        <property name="typeAliasesSuperType" value="com.jsonmedia.common.persistence.BaseEntity"/>
<property name="dataSource" ref="dataSource2"></property>
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>

<!-- 配置数据源2的mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="serviceSessionFactory2"></property>
<property name="basePackage" value="Contra"></property>
</bean>

<!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。 -->
<context:component-scan base-package="com.jsonmedia,Contra"><!-- base-package 
如果多个,用“,”分隔 -->
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>


com.jsonmedia是我的我数据源1用到的各种dao,service等,Contra是数据源二用到的dao,service等,

<value>classpath*:mappings/**/*.xml</value> 和 <value>classpath*:contract/*.xml</value>

   是分别加载不同数据的mapper...

配置之后 ,我们就可以随便 进行对着两个数据 的数据进行操作 ,包括 数据库之间的数据转移和数据查询等。。。

列如注入数据 的service  查出数据一的数据 ,然后在注入数据二的 service 保存数据一读取的数据到 数据二的数据库。。。。。。。   







猜你喜欢

转载自blog.csdn.net/superPojo/article/details/72777893