Spring Boot 2.x 和 Druid 多数据源整合 dm
参考链接
SpringBoot alibaba druid · 语雀
Home · alibaba/druid Wiki · GitHub
druid/druid-spring-boot-starter at master · alibaba/druid · GitHub
使用
1)添加依赖
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.20</version>
</dependency>
<!-- 达梦数据库 -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.1.193</version>
</dependency>
<!-- 用于多数据源切换 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.3.1</version>
</dependency>
2)添加 druid 配置(application.yml)
这里的 druid 的配置只是例子,更多的配置可以参考DruidDataSource配置属性列表 或者 DruidDataSource配置
spring:
datasource:
dynamic:
druid:
initial-size: 1
max-active: 20
min-idle: 1
max-wait: 60000
primary: master #设置默认的数据源或者数据源组,默认值即为master
datasource:
master: # 主数据源配置
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://localhost:5236?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: xxxx
password: xxxx
slave: # 主数据源配置
url: jdbc:mysql://localhost:3306/xxx?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
username: xxxx
password: xxxx
3)使用例子
这个例子中 UserServiceImpl 类上没有 @DS 注解,那么这个就是按照 application.yml 配置的 primary参数(默认 master),上面的配置为 master,即 UserServiceImpl 中默认使用的数据源是 master 数据源,而 下面的 selectSlaveUsers 方法上面使用注解 @DS("slave"),即调用这个方法是使用的 slave 数据源
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public List<User> selectMasterUsers() {
return baseMapper.selectList(null);
}
@Override
@DS("slave")
public List<User> selectSlaveUsers() {
return baseMapper.selectList(null);
}
}
示例项目
dynamic-datasource-samples/orm-samples/mybatisplus3-sample at master · dynamic-datasource/dynamic-datasource-samples