mybatis.xml"/>
--mapper和resultmap配置路径-->
--表示在com.hoo目录下的任意包下的resultmap包目录中,以-resultmap.xml或-mapper.xml结尾所有文件-->
classpath:
com/hoo/framework/mybatis/mybatis-common.xml
classpath:
com/hoo/**/resultmap/*-resultmap.xml
classpath:
com/hoo/**/mapper/*-mapper.xml
classpath:
com/hoo/**/mapper/**/*-mapper.xml
--通过扫描的模式,扫描目录在com/hoo/任意目录下的mapper目录下,所有的mapper都需要继承SqlMapper接口的接口-->
上面分配配置了Oracle和MySQL数据源,MultipleDataSource为自定义的DataSource,它是继承AbstractRoutingDataSource实现抽象方法即可。
2、MultipleDataSource实现AbstractRoutingDataSource抽象数据源中方法,定义CustomerContextHolder来动态切换数据源。
代码如下:
packagecom.hoo.framework.spring.support;
importorg.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
*function:
Spring多数据源实现
*@authorhoojo
*@createDate2013-9-27上午11:
24:
53
*@fileMultipleDataSource.java
*@packagecom.hoo.framework.spring.support
*@projectSHMB
*@blog
*@emailhoojo_@
*@version1.0
*/
publicclassMultipleDataSourceextendsAbstractRoutingDataSource{
@Override
protectedObjectdetermineCurrentLookupKey(){
returnCustomerContextHolder.getCustomerType();
}
}
CustomerContextHolder
packagecom.hoo.framework.spring.support;
/**
*function:
多数据源
*@authorhoojo
*@createDate2013-9-27上午11:
36:
57
*@fileCustomerContextHolder.java
*@packagecom.hoo.framework.spring.support
*@projectSHMB
*@blog
*@emailhoojo_@
*@version1.0
*/
publicabstractclassCustomerContextHolder{
publicfinalstaticStringDATA_SOURCE_ORACLE="oracleDataSource";
publicfinalstaticStringDATA_SOURCE_MYSQL="mySqlDataSource";
privatestaticfinalThreadLocalcontextHolder=newThreadLocal();
publicstaticvoidsetCustomerType(StringcustomerType){
contextHolder.set(customerType);
}
publicstaticStringgetCustomerType(){
returncontextHolder.get();
}
publicstaticvoidclearCustomerType(){
contextHolder.remove();
}
}
其中,常量对应的applicationContext-datasource.xml中的multipleDataSource中的targetDataSource的key,这个很关键不要搞错了。
3、测试看能否切换数据源
packagecom.hoo.framework.service.impl;
importorg.junit.Test;
importorg.junit.runner.RunWith;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.beans.factory.annotation.Qualifier;
importorg.springframework.test.context.ContextConfiguration;
importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;
importcom.hoo.framework.dao.BaseDao;
importcom.hoo.framework.log.ApplicationLogging;
importcom.hoo.framework.spring.support.CustomerContextHolder;
/**
*function:
多数据源测试服务接口测试
*@authorhoojo
*@createDate2013-10-10上午11:
18:
18
*@fileMultipleDataSourceServiceImplTest.java
*@packagecom.hoo.framework.service.impl
*@projectSHMB
*@blog