1.pom.xml文件配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
2. 配置多数据源
application.yml
spring:
datasource:
#数据源1
source1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&useSSL=false
username: root
password: root
#数据源2
source2:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
#必须写成jdbc-url,只写url会报错
jdbc-url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&useSSL=false
username: root
password: root
为每个数据源定义配置类
Source1DatasourceConfig
@Configuration
@MapperScan(basePackages = Source1DatasourceConfig.PACKAGE, sqlSessionFactoryRef = "source1SqlSessionFactory")
public class Source1DatasourceConfig {
//dao扫描路径
static final String PACKAGE = "com.qiang.example.springboot_mybatis.source1dao";
//mapper扫描路径
static final String MAPPER_LOCATION = "classpath:mapper/source1/*.xml";
@Primary
@Bean(name = "source1datasource")
@ConfigurationProperties("spring.datasource.source1")
public DataSource source1DataSource(){
//如果是创建DruidDataSourceBuilder,项目启动会报错,详情见后面
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "source1TransactionManager")
public DataSourceTransactionManager source1TransactionManager(){
return new DataSourceTransactionManager(source1DataSource());
}
@Primary
@Bean(name = "source1SqlSessionFactory")
public SqlSessionFactory source1SqlSessionFactory(@Qualifier("source1datasource")DataSource dataSource) throws Exception{
final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
//配置mapper.xml文件
// sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(Source1DatasourceConfig.MAPPER_LOCATION));
return sessionFactoryBean.getObject();
}
}
Source2DataSourceConfig
@Configuration
@MapperScan(basePackages = Source2DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "source2SqlSessionFactory")
public class Source2DataSourceConfig {
//dao扫描路径
static final String PACKAGE = "com.qiang.example.springboot_mybatis.source2dao";
//mapper扫描路径
static final String MAPPER_LOCATION = "classpath:mapper/source2/*.xml";
@Bean(name = "source2datasource")
@ConfigurationProperties("spring.datasource.source2")
public DataSource source2DataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "source2TransactionManager")
public DataSourceTransactionManager source2TransactionManager(){
return new DataSourceTransactionManager(source2DataSource());
}
@Bean(name = "source2SqlSessionFactory")
public SqlSessionFactory source2SqlSessionFactory(@Qualifier("source2datasource")DataSource dataSource) throws Exception{
final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
//配置mapper.xml文件
// sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(Source2DataSourceConfig.MAPPER_LOCATION));
return sessionFactoryBean.getObject();
}
}
之后建立实体类及相应的dao、service、controller。
测试效果如下:


本文详细介绍如何在Spring Boot项目中配置MyBatis多数据源,包括pom.xml依赖设置、application.yml配置、自定义数据源配置类,并通过实体类、DAO、Service和Controller的搭建实现具体功能。
5915

被折叠的 条评论
为什么被折叠?



