spingboot mybatis 多資料來源
阿新 • • 發佈:2018-12-29
//表示這個類為一個配置類 @Configuration // 配置mybatis的介面類放的地方 @MapperScan(basePackages = "com.xingdarich.common.dao", sqlSessionFactoryRef = "master1SqlSessionFactory") public class mysqlConfig { // 精確到 master 目錄,以便跟其他資料來源隔離 static final String PACKAGE = "com.xingdarich.common.dao"; static final String MAPPER_LOCATION = "classpath:mybatis/common/*.xml"; static final String MAPPER_LOCATION1 = "classpath:mybatis-config.xml"; @Value("${master1.datasource.url}") private String url; @Value("${master1.datasource.username}") private String user; @Value("${master1.datasource.password}") private String password; @Value("${master1.datasource.driver-class-name}") private String driverClass; @Bean(name = "master1DataSource") @Primary public DataSource masterDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); return dataSource; } @Bean(name = "master1TransactionManager") @Primary public DataSourceTransactionManager masterTransactionManager() { return new DataSourceTransactionManager(masterDataSource()); } @Bean(name = "master1SqlSessionFactory") @Primary public SqlSessionFactory masterSqlSessionFactory(@Qualifier("master1DataSource") DataSource masterDataSource) throws Exception { ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); try { sessionFactory.setDataSource(masterDataSource); sessionFactory.setConfigLocation(resolver.getResource(MAPPER_LOCATION1)); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(mysqlConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); }catch (Exception e){ e.printStackTrace(); return null; } } }
//表示這個類為一個配置類 @Configuration @MapperScan(basePackages = "com.xingdarich.common.dao2", sqlSessionFactoryRef = "master2SqlSessionFactory") public class oracleConfig { // 精確到 master 目錄,以便跟其他資料來源隔離 static final String PACKAGE = "com.xingdarich.common.dao2"; static final String MAPPER_LOCATION = "classpath:mybatisMapper/*.xml"; @Value("${master2.datasource.url}") private String url; @Value("${master2.datasource.username}") private String user; @Value("${master2.datasource.password}") private String password; @Value("${master2.datasource.driver-class-name}") private String driverClass; @Bean(name = "master2DataSource") public DataSource master2DataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); return dataSource; } @Bean(name = "master2TransactionManager") public DataSourceTransactionManager master2TransactionManager() { return new DataSourceTransactionManager(master2DataSource()); } @Bean(name = "master2SqlSessionFactory") public SqlSessionFactory clusterSqlSessionFactory(@Qualifier("master2DataSource") DataSource master2DataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(master2DataSource); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(oracleConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); } }
master1: datasource: url: jdbc:mysql://rm-2ze7ou2d4fk472fa7go.mysql.rds.aliyuncs.com:3306/sn-dev?allowMultiQueries=true username: snsafetyreadonly password: 34krrdk4*&3dWf driver-class-name: com.mysql.jdbc.Driver thymeleaf: mode: LEGACYHTML5 cache: false jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss master2: datasource: url: jdbc:oracle:thin:@192.168.1.11:1521:orcl username: jtaq password: aabb124 driver-class-name: oracle.jdbc.driver.OracleDriver