mybatis中配置动态数据源
//在这里只贴上数据源的配置 其他的配置不再贴了
//配置多个数据源
<bean id="dataSource_ds" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${dsurl}" />
<property name="username" value="${name}" />
<property name="password" value="${pwd}" />
<property name="validationQuery" value="${validationSQuery}" />
<property name="testWhileIdle" value="${testWhileIdle}" />
</bean>
<bean id="dataSource_vd" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${vdurl}" />
<property name="username" value="${name}" />
<property name="password" value="${pwd}" />
<property name="validationQuery" value="${validationSQuery}" />
<property name="testWhileIdle" value="${testWhileIdle}" />
</bean>
<bean id="dataSource_pr" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${prurl}" />
<property name="username" value="${name}" />
<property name="password" value="${pwd}" />
<property name="validationQuery" value="${validationSQuery}" />
<property name="testWhileIdle" value="${testWhileIdle}" />
</bean>
<!-- 动态配置数据源 -->
<bean id ="dataSource" class= "com.yutu.util.DynamicDataSource" >
<property name ="targetDataSources">
<map key-type ="java.lang.String">
<entry value-ref ="dataSource_ds" key= "dataSource_ds" </entry>
<entry value-ref ="dataSource_vd" key= "dataSource_vd"</entry>
<entry value-ref ="dataSource_pr" key= "dataSource_pr"</entry>
</map >
</property >
<!-- 默认使用的数据源 -->
<property name ="defaultTargetDataSource" ref= "dataSource_vd"></property >
</bean >
//使用动态数据源的工具类
public class DataSourceContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static void setDbType(String dbType) {
contextHolder.set(dbType);
}
public static String getDbType() {
return ((String) contextHolder.get());
}
public static void clearDbType() {
contextHolder.remove();
}
}
//在使用过程中 在controller或者Service中使用
// DataSourceContextHolder.setDbType(“dataSource_ds”);这个方法
//就完成了动态数据源的设置