1、配置多数据源
增加druid依赖
完整pom文件
数据源配置文件
route.datasource.driver-class-name=com.mysql.jdbc.Driver
route.datasource.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
route.datasource.username=root
route.datasource.password= 123456operate.datasource.driver-class-name=com.mysql.jdbc.Driver
operate.datasource.url= jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8
operate.datasource.username=root
operate.datasource.password= 123456
multiple-datasource.properties
初始化数据源
/*** 多数据源配置
*@authorzhouliang
* @date 2017年9月20日*/@Configuration
@PropertySource("classpath:multiple-datasource.properties")public classMyBatisConfig {
@AutowiredprivateEnvironment env;
@Autowired MybatisSpringPageInterceptor inteceptor;/*** 创建数据源(数据源的名称:方法名可以取为XXXDataSource(),XXX为数据库名称,该名称也就是数据源的名称)*/@Beanpublic DataSource operateDataSource() throwsException {
Properties props= newProperties();
props.put("driverClassName", env.getProperty("operate.datasource.driver-class-name"));
props.put("url", env.getProperty("operate.datasource.url"));
props.put("username", env.getProperty("operate.datasource.username"));
props.put("password", env.getProperty("operate.datasource.password"));returnDruidDataSourceFactory.createDataSource(props);
}
@Beanpublic DataSource routeDataSource() throwsException {
Properties props= newProperties();
props.put("driverClassName", env.getProperty("route.datasource.driver-class-name"));
props.put("url", env.getProperty("route.datasource.url"));
props.put("username", env.getProperty("route.datasource.username"));
props.put("password", env.getProperty("route.datasource.password"));returnDruidDataSourceFactory.createDataSource(props);
}/*** @Primary 该注解表示在同一个接口有多个实现类可以注入的时候,默认选择哪一个,而不是让@autowire注解报错
* @Qualifier 根据名称进行注入,通常是在具有相同的多个类型的实例的一个注入(例如有多个DataSource类型的实例)*/@Bean
@PrimarypublicDynamicDataSource dataSource(
@Qualifier("routeDataSource") DataSource routeDataSource,
@Qualifier("operateDataSource") DataSource operateDataSource) {
Map targetDataSources = new HashMap();
targetDataSources.put(DatabaseType.routeDS, routeDataSource);
targetDataSources.put(DatabaseType.operateDS, operateDataSource);
DynamicDataSource dataSource= newDynamicDataSource();
dataSource.setTargetDataSources(targetDataSources);//该方法是AbstractRoutingDataSource的方法
returndataSource;
}/*** 根据数据源创建SqlSessionFactory*/@BeanpublicSqlSessionFactory sqlSessionFactory(DynamicDataSource ds)throwsException {
SqlSessionFactoryBean fb= newSqlSessio