唠嗑:今天写项目,我们需要用到另外一个项目里面的大量数据和表,一个同事配置了多数据源,记录一下。
1.引入依赖报
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2.配置多数据源
spring.datasource.dynamic.primary=master
spring.datasource.dynamic.strict=false
spring.datasource.dynamic.datasource.master.url=数据库连接地址
spring.datasource.dynamic.datasource.master.username=账号
spring.datasource.dynamic.datasource.master.password=密码
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.type=com.alibaba.druid.pool.DruidDataSource
#配置的数据源 slave_1数据源名称
spring.datasource.dynamic.datasource.slave_1.url=数据库连接地址
spring.datasource.dynamic.datasource.slave_1.username=账号
spring.datasource.dynamic.datasource.slave_1.password=密码
spring.datasource.dynamic.datasource.slave_1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.slave_1.type=com.alibaba.druid.pool.DruidDataSource
3.如何使用 需要建立对应的实体类和mapper
200.png
public Object selectStoreSite(JsxSysSite entity,
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
IPage<JsxSysSite> status = sysSiteMapper.selectPage(new Page<JsxSysSite>(pageNum, pageSize),
new QueryWrapper<>(entity)
.orderByDesc("id"));
return new CommonResult().success(status);
}
@DS(“slave_1”)表示这个方法就是访问的配置的数据源里面的数据。
@DS(“slave_1”) 括号内即是application.properties中配置的数据源名称,不加注解默认是访问主库master,可加在service方法上,也可加在mapper方法上,但强烈不建议同时在service和mapper注解。