参考官方文档:https://baomidou.com/pages/a61e1b/#%E6%96%87%E6%A1%A3-documentation
创建一个demo项目,引入maven依赖坐标
com.alibaba
druid
1.2.9
mysql
mysql-connector-java
5.1.46
com.microsoft.sqlserver
mssql-jdbc
com.baomidou
mybatis-plus-boot-starter
3.5.1
com.baomidou
dynamic-datasource-spring-boot-starter
3.3.2
application.yml的数据源部分配置
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
master:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://127.0.0.1:1433;databaseName=xxx;characterEncoding=utf8
username: sa
password: 123456
slave_1:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/xxx?zeroDateTimeBehavior=convertToNull&useSSL=false
username: root
password: 123456
省略model层,省略dao层,省略mapper细节文件
service层使用master数据源查询数据,加@DS(“master”)注解到service实现类上,也可以加到mapper接口上,值就是配置的数据源名称master或者slave_1
@Service
@DS("master")
public class DictionaryServiceImpl extends ServiceImpl implements DictionaryService {
@Override
public List
service层使用slave1数据源查询数据
@Service
@DS("slave_1")
public class ItemServiceImpl extends ServiceImpl implements ItemService {
@Override
public List
创建单元测试
@SpringBootTest
@RunWith(SpringRunner.class)
public class DualDBTest {
@Resource
private ItemService itemService;
@Resource
private DictionaryService dictionaryService;
//数据源master测试
@Test
public void master() {
List allDictList = dictionaryService.list();
System.out.println("查询条数:" + allDictList.size());
}
//数据源slave_1测试
@Test
public void slave1() {
List- allItemList = itemService.list();
System.out.println("查询条数:" + allItemList.size());
}
@Test
public void db1_2() {
// master
List
allDictList = dictionaryService.list();
System.out.println("查询条数:" + allDictList.size());
System.out.println("=========漂亮的分割线=========");
//slave
List- allItemList = itemService.list();
System.out.println("查询条数:" + allItemList.size());
}
}
单元测试结果



