1. 程式人生 > >關於ssm框架中的動態資料來源

關於ssm框架中的動態資料來源

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”);這個方法
//就完成了動態資料來源的設定