为了实现springboot
集成mybatisPlus
以及多数据源的实现,我们需要进行以下步骤进行操作:
1. 引入依赖
首先,在pom.xml
文件中引入如下依赖:
<!-- springboot相关依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 数据源相关依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
<!-- mybatis-plus相关依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
2. 数据源配置
在application.yml
(或application.properties
)文件中,添加如下配置:
# 主数据源配置
spring.datasource.master.url=jdbc:mysql://localhost:3306/db1
spring.datasource.master.username=root
spring.datasource.master.password=root
spring.datasource.master.driver-class-name=com.mysql.jdbc.Driver
# 从数据源配置
spring.datasource.slave.url=jdbc:mysql://localhost:3306/db2
spring.datasource.slave.username=root
spring.datasource.slave.password=root
spring.datasource.slave.driver-class-name=com.mysql.jdbc.Driver
3. 配置mybatisPlus
在MybatisPlusConfig
类中,使用MybatisSqlSessionFactoryBean
构造方法的setDataSource
方法,指定数据源,完成数据源的配置。例如:
@Configuration
@MapperScan("com.example.mapper.*")
public class MybatisPlusConfig {
/**
* master数据源
*/
@Bean(name = "masterDataSource")
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
/**
* slave数据源
*/
@Bean(name = "slaveDataSource")
@ConfigurationProperties(prefix = "spring.datasource.slave")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
/**
* 多数据源配置
*/
@Bean
public DataSource multipleDataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("slaveDataSource") DataSource slaveDataSource) {
Map<String, DataSource> targetDataSources = new HashMap<>();
targetDataSources.put("master", masterDataSource);
targetDataSources.put("slave", slaveDataSource);
return new DynamicDataSource(masterDataSource, targetDataSources);
}
/**
* 配置MybatisPlus
*/
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(@Qualifier("multipleDataSource") DataSource dataSource) {
MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
mybatisSqlSessionFactoryBean.setDataSource(dataSource);
return mybatisSqlSessionFactoryBean;
}
}
示例说明
示例一:使用单个数据源查询
如果只使用一个数据源进行查询,可以按照mybatisPlus
的常规使用方式进行,不需要额外配置。
例如,在UserMapper
中编写如下代码:
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 按条件查询用户信息
*
* @param age 年龄
* @return 用户列表
*/
@Select("select * from user where age = #{age}")
List<User> selectByAge(int age);
}
在UserController
中调用该方法:
@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
/**
* 按年龄查询用户信息
*
* @param age 年龄
* @return 用户列表
*/
@GetMapping("/selectByAge")
public List<User> selectByAge(int age) {
return userMapper.selectByAge(age);
}
}
这样可以查询到符合条件的用户列表。
示例二:使用多个数据源查询
如果需要使用多个数据源进行查询,就需要在Mapper
中使用@DS
注解,指定使用的数据源。
例如,在UserMapper
中编写如下代码:
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 按条件查询用户信息(使用master数据源)
*
* @param age 年龄
* @return 用户列表
*/
@DS(value = "master")
@Select("select * from user where age = #{age}")
List<User> selectFromMasterByAge(int age);
/**
* 按条件查询用户信息(使用slave数据源)
*
* @param age 年龄
* @return 用户列表
*/
@DS(value = "slave")
@Select("select * from user where age = #{age}")
List<User> selectFromSlaveByAge(int age);
}
在UserController
中调用该方法:
@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
/**
* 按年龄查询用户信息(使用master数据源)
*
* @param age 年龄
* @return 用户列表
*/
@GetMapping("/selectFromMasterByAge")
public List<User> selectFromMasterByAge(int age) {
return userMapper.selectFromMasterByAge(age);
}
/**
* 按年龄查询用户信息(使用slave数据源)
*
* @param age 年龄
* @return 用户列表
*/
@GetMapping("/selectFromSlaveByAge")
public List<User> selectFromSlaveByAge(int age) {
return userMapper.selectFromSlaveByAge(age);
}
}
这样就可以分别使用不同的数据源查询到符合条件的用户列表了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot集成mybatisPlus+多数据源的实现示例 - Python技术站