1.引入相关的依赖 驱动和连接池等等,下面只是mybatis-plus相关依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.7.1</version>
<exclusions>
<exclusion>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.0.7.1</version>
</dependency>
2.在application.yml文件配置如下:注意jdbc-url,单个数据元是url
spring:
datasource:
app1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@192.168.126.129:1521:app
username: app1
password: 123456
app2:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url: jdbc:oracle:thin:@192.168.126.129:1521:app
username: app2
password: 123456
3.新建两个配置类分别对应两个数据元
(这里用原生的sqlSessionFactoy的话,使用mybatis-plus自带的save,insert等等会出现Invalid bound statement(not found)的问题,所以得换成 MybatisSqlSessionFactoryBean,这样就可以使用basemapper中的基础crud了 )
package com.al.config;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.al.dao.app1"},//mapper接口的包位置
annotationClass= Mapper.class,
sqlSessionFactoryRef = "sqlSessionFactoryApp1")
public class DBApp1Config {
@Bean(name = "dataSourceApp1")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.app1")
public DataSource dataSourceAppPlatformSystem(){
return DataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactoryApp1")
@Primary
public SqlSessionFactory sqlSessionFactoryApp1(@Qualifier("dataSourceApp1") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/app1/*.xml")
);
return factoryBean.getObject();
}
@Bean(name = "sqlSessionTemplateApp1")
@Primary
public SqlSessionTemplate sqlSessionTemplateApp1(@Qualifier("sqlSessionFactoryApp1") SqlSessionFactory sessionFactory){
return new SqlSessionTemplate(sessionFactory);
}
}
package com.al.config;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.al.dao.app2"},//mapper接口的包位置
annotationClass= Mapper.class,
sqlSessionFactoryRef = "sqlSessionFactoryApp2")
public class DBApp2Config {
@Bean(name = "dataSourceApp2")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.app2")
public DataSource dataSourceAppPlatformSystem(){
return DataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactoryApp2")
@Primary
public SqlSessionFactory sqlSessionFactoryApp2(@Qualifier("dataSourceApp2") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/app2/*.xml")
);
return factoryBean.getObject();
}
@Bean(name = "sqlSessionTemplateApp2")
@Primary
public SqlSessionTemplate sqlSessionTemplateApp2(@Qualifier("sqlSessionFactoryApp2") SqlSessionFactory sessionFactory){
return new SqlSessionTemplate(sessionFactory);
}
}