<?xml version="1.0" encoding="UTF-8"?>
classpath:system.properties
下面对配置进行一个简单的说明和补充
1、数据源配置:dataSource_manage 和 dataSource_business,对于业内人士应该不需要多解释,大家都懂的;
2、sqlSessionFactory配置
(1)属性dataSource,指向对应的数据源,即上面的dataSource_manage或dataSource_business
(2)属性mapperLocations,指定mapper.xml所在的位置,支持正则表达式
在这里我们注意到,两个sqlSessionFactory都配置了相同的mapperLocations,会不会出现混淆呢,显然是不会的,看下面的说明
3、MapperScannerConfigurer配置(org.mybatis.spring.mapper.MapperScannerConfigurer)
(1)属性sqlSessionFactoryBeanName,指向上面配置的sqlSessionFactory1和sqlSessionFactory2。需要注意的是MapperScannerConfigurer中还有一个
类似的属性sqlSessionFactory,这个属性一般这样配置
<property name="sqlSessionFactory" ref="sqlSessionFactory1" />
但在加载时会报错,提示数据源的相关配置${manage.jdbc.driverClassName}都找不到,这是因为sqlSessionFactory会在system.properties资源之前先加载,导致
无法识别${xxx}中的值,至于具体原因,有待研究
(2)属性basePackage,指定接口Mapper.java所在的包路径
(3)属性markerInterface,个人认为这个属性是最关键的,之前照网上的配置试过很多次都失败了,就是因为没有用到它。该属性对应的是我们自定义的接口,以下图为例,只要是实现了ManagementMapper.java的Mapper,都使用sqlSessionFactory1,即全部使用数据源dataSource_manage,这样就根据不同的markerInterface实现区别了不同数据源的使用。
JcMySubscribeMapper和JcMySubscribeMapper继承了ManagementMapper接口
TsTaskMapper、TsTaskReplyMapper和TsTaskUserMapper继承了BusinessMapper接口