mybatis配置多数据源实例(DynamicDataSource),无jdbc.properties

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>

猜你喜欢

转载自blog.csdn.net/weixin_42447373/article/details/80761459