2.实现类
package com.want.search.util; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class DbContextHolder extends AbstractRoutingDataSource{ public static final String DATA_SOURCE_DEFA = "dataSource1"; public static final String DATA_SOURCE_FLOW = "dataSource2"; private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); /** * 设置当前数据库。 * @param dbType */ public static void setDbType(String dbType) { contextHolder.set(dbType); } /** * 取得当前数据源。 * @return */ public static String getDbType() { String str = (String) contextHolder.get(); return str; } /** * 清除上下文数据 */ public static void clearDbType() { contextHolder.remove(); } @Override protected Object determineCurrentLookupKey() { // TODO Auto-generated method stub return DbContextHolder.getDbType(); } }3.将数据源注入到sqlsessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="mapperLocations" value="classpath:mybatis/*Mapper.xml" /> <property name="dataSource" ref="dynamicDataSource" /> <property name="typeAliasesPackage" value="com.want.search.vo" /> </bean>4.具体调用方法(只能在controller层才能实现数据源切换)
DbContextHolder.setDbType(DbContextHolder.DATA_SOURCE_FLOW);