mybatis配置多資料來源例項(DynamicDataSource),無jdbc.properties
阿新 • • 發佈:2019-01-28
1.1.DataSourceContextHolder(資料庫切換工具類)
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(); } }
1.2.DynamicDataSource(基本類)
public class DynamicDataSource extends AbstractRoutingDataSource { @Override public Logger getParentLogger() throws SQLFeatureNotSupportedException { return null; } @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getDbType(); } }
1.3.DataSourceType(資料庫型別常量類)
public class DataSourceType { // 192.168.10.72:3307/100msh_admin public static final String SOURCE_ADMIN = "ds_admin"; // 192.168.10.72:3308/100msh_partner public static final String SOURCE_PARTNER = "ds_partner"; // 192.168.10.72:3309/100msh_mop public static final String SOURCE_MOP = "ds_mop"; }
1.4.配置檔案XML
<!-- 多資料來源配置 -->
<bean id="ds_admin" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/cpdata"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="ds_partner" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/cpzdy"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="ds_mop" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://192.168.10.72:3309/100msh_mop"></property>
<property name="username" value="root"></property> <property name="password"
value="root"></property> </bean>
<!-- 動態配置資料來源 -->
<bean id="dataSource" class="com.baimi.routerweb.datasource.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry value-ref="ds_admin" key="ds_admin"></entry>
<entry value-ref="ds_partner" key="ds_partner"></entry>
<entry value-ref="ds_mop" key="ds_mop"></entry>
</map>
</property>
<property name="defaultTargetDataSource" ref="ds_admin"></property> <!-- 預設使用ds1的資料來源 -->
</bean>