Mybatis-plus Springboot 多数据源的实现
要实现Mybatis-plus Springboot多数据源,你需要进行以下步骤:
- 添加依赖:在你的Springboot项目中,添加Mybatis-plus和多数据源相关的依赖。例如,可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>latest_version</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
- 配置数据源:在application.properties或application.yml文件中配置多个数据源。例如,可以配置两个数据源分别为db1和db2:
spring.datasource.db1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.db1.username=root
spring.datasource.db1.password=123456
spring.datasource.db1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.db2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.db2.username=root
spring.datasource.db2.password=123456
spring.datasource.db2.driver-class-name=com.mysql.jdbc.Driver
- 创建数据源配置类:创建一个类,用于配置多个数据源。例如,可以创建一个类名为DataSourceConfig的Java类,并使用@Configuration注解标记该类为配置类:
@Configuration
public class DataSourceConfig {
@Bean("db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean("db2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
}
- 配置Mybatis-plus:创建一个类,用于配置Mybatis-plus。例如,可以创建一个类名为MybatisPlusConfig的Java类,并使用@Configuration注解标记该类为配置类:
@Configuration
@MapperScan(basePackages = {"com.example.mapper"})
public class MybatisPlusConfig {
@Autowired
@Qualifier("db1DataSource")
private DataSource db1DataSource;
@Autowired
@Qualifier("db2DataSource")
private DataSource db2DataSource;
@Bean
public MybatisSqlSessionFactoryBean sqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(roundRobinDataSourceProxy());
return sessionFactory;
}
@Bean
public AbstractRoutingDataSource roundRobinDataSourceProxy() {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put("db1", db1DataSource);
targetDataSources.put("db2", db2DataSource);
RoutingDataSourceProxy proxy = new RoutingDataSourceProxy();
proxy.setDefaultTargetDataSource(db1DataSource);
proxy.setTargetDataSources(targetDataSources);
return proxy;
}
}
-
创建Mapper接口和Mapper.xml文件:创建Mapper接口和对应的Mapper.xml文件。例如,可以创建一个名为UserMapper的Mapper接口和对应的UserMapper.xml文件。
-
测试多数据源:编写测试代码,测试多数据源的功能。例如,可以编写一个测试类,调用UserMapper的方法,分别访问两个数据源:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusMultiDataSourceTest {
@Autowired
private UserMapper userMapper;
@Test
public void testMultiDataSource() {
List<User> userList1 = userMapper.selectList(new QueryWrapper<User>().eq("db", "db1"));
List<User> userList2 = userMapper.selectList(new QueryWrapper<User>().eq("db", "db2"));
System.out.println("db1: " + userList1);
System.out.println("db2: " + userList2);
}
}
以上是实现Mybatis-plus Springboot多数据源的基本步骤,你可以根据自己的需求进行配置和扩展
原文地址: http://www.cveoy.top/t/topic/iNsT 著作权归作者所有。请勿转载和采集!