首先配置 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 保存数据一读取的数据到 数据二的数据库。。。。。。。