使用方法:
1.工程引用pom:
<dependency>
<groupId>com.che</groupId>
<artifactId>che-rw-datasource</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2.spring配置2个数据源,master和slave。注入DynamicDataSource,并将master和slave数据源put到Map中(注意:Map的key不能为其他字符),代码样例:
<!--获取对应的数据源--> <bean id="dynamicDataSource" class="com.che.rw.datasource.DynamicDataSource"> <property name="defaultTargetDataSource" ref="dataSource"/> <property name="targetDataSources"> <map> <!--根据数据源标识加载数据源--> <entry key="master" value-ref="dataSource"/> <entry key="slave" value-ref="slaveDataSource"/> </map> </property> </bean> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <bean id="dualDataSourceAspect" class="com.che.rw.aspect.DataSourceAspect"/> <aop:config> <aop:aspect id="c" ref="dualDataSourceAspect"> <aop:pointcut id="txex" expression="execution(* com.sfbm.carmall.dao.*.*.*(..))"/> <!--执行dao方法前先执行下面的方法 判断使用哪个数据源 获取对应的标识--> <aop:before pointcut-ref="txex" method="before"/> </aop:aspect> </aop:config>
<!-- mybatis使用 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dynamicDataSource"/> <!--<property name="configLocation" value="classpath:/config/mybatis/configuration.xml"/>--> </bean>