场景:多数据源场景,是否有必要动态数据源
1.第一种: 多读多写
2.第二种: 读写分离
- 第一种情况.
OrderMapper
和
UserMapper
由于业务原因订单和用户不在一个库,订单完成需要同时对用户和余额都做想要的操作,我称成为多读多写.
开发,上来二话不说,动态数据源(aop)搞起来,其实有没有发现,没有必要动态数据源一样可以解决这个问题. 仔细看配置
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.yzx.sms.mapper"/>
<property name="sqlSessionFactoryBeanName" value="smsSqlSessionFactory"/>
</bean>
<bean id="smsSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="sms_dataSource"/>
<property name="configLocation" value="classpath:spring/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:mapper/sms/*.xml"/>
</bean>
发现没,每一个Mapper接口已经指定了数据源,为啥要动态切换?同一个mapper本就只有一个数据源,其实没有必要.增加复杂性.
- 第二种情况.