關於ssm框架中的動態資料來源
阿新 • • 發佈:2018-12-12
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”);這個方法
//就完成了動態資料來源的設定