1.在原有的ssm框架中jdbc.properties文件添加另一個MySQL 連接路徑
2.配置spring-mybatis文件
<bean id="defultdataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化連接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 連接池最大數量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 連接池最大空閒 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 連接池最小空閒 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 獲取連接最大等待時間 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<!-- 配置第二個數據源 -->
<bean id="jrt_dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${jrturl}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化連接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 連接池最大數量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 連接池最大空閒 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 連接池最小空閒 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 獲取連接最大等待時間 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<bean id="dataSource" class="com.sand.ssm.utils.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<!-- 指定lookupKey和與之對應的數據源,這裏的key可以自行定義,要切換數據庫的時候以key爲標識,不要寫錯 -->
<entry key="defultdataSource" value-ref="defultdataSource"></entry>
<entry key="jrt_dataSource" value-ref="jrt_dataSource"></entry>
</map>
</property>
<!-- 這裏可以指定默認的數據源 -->
<property name="defaultTargetDataSource" ref="defultdataSource" />
</bean>
3.添加切換數據庫的工具類
(1)創建DynamicDataSource工具類繼承AbstractRoutingDataSource
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DynamicDataSourceHolder.getDataSource();
}
}
(2)創建DynamicDataSourceHolder工具類
public class DynamicDataSourceHolder {
private static final ThreadLocal<String> THREAD_DATA_SOURCE = new ThreadLocal();
public static String getDataSource()
{
return (String)THREAD_DATA_SOURCE.get();
}
public static void setDataSource(String dataSource)
{
THREAD_DATA_SOURCE.set(dataSource);
}
public static void clearDataSource()
{
THREAD_DATA_SOURCE.remove();
}
}
4.添加兩個數據庫對應的test數據表的映射文件,及類文件,編寫對應的service文件及實現
5.編寫對應的controller文件,
@Component
public class GftestController {
@Resource
private GFtestService gFtestService;
@Resource
private SZTestService sZTestService;
@Scheduled(cron="0 */1 * * * *")
public void gfsjcjtest(){
DynamicDataSourceHolder.setDataSource("defultdataSource");
System.out.println("gftest 保存開始");
GFTest gf=new GFTest();
gf.setName("羅郅");
int i=gFtestService.insertSelective(gf);
System.out.println("保存結果+"+i);
}
@Scheduled(cron="0 */1 * * * *")
public void szsjcjtest(){
DynamicDataSourceHolder.setDataSource("jrt_dataSource");
System.out.println("sztest 保存開始");
SZTest gf=new SZTest();
gf.setName("羅小郅");
int i=sZTestService.insertSelective(gf);
System.out.println("保存結果+"+i);
}
5.實現數據庫的定時添加數據