1、简介
在实际开发中项目很容易就遇到使用多数据源的情形,比如:在新增数据时除了给自己的库保留一份,还需要同步到别人的库;转移程序需要将A库的数据转到B库等等。常见的使用Mybatis-Plus配置多数据源方式有两种:一种是通过java config的方式手动配置两个数据源,另一种方式便是使用mybatis-plus-dynamic。这里介绍下mybatis-plus-dynamic的使用。
2、实战
2.1 pom.xml引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2.2 application-dev.yml添加配置
application.yml中配置不同的yml,启动不同的服务环境比如dev,sit,pro等
server:
port: 8086
spring:
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
primary: mysql1
strict: false
datasource:
mysql1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo1?serverTimezone=UTC
username: root
password: root1234
mysql2:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo2?serverTimezone=UTC
username: root
password: root1234
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag
logic-delete-value: 1
logic-not-delete-value: 0
mapper-locations:
classpath: mapper/*.xml
type-aliases-package: com.example.demo.entity
logging:
level:
com:
example:
mapper : error
由于本机只安装了MySQL数据库,所以创建了两个不同名字的数据库用于模拟表示不同数据库场景。配置在dynamic下进行,其中primary必须配置,用于选择默认的数据源,这里mysql1是默认数据库。
2.3 使用
使用主要是通过@DS注解进行配置选择数据源,并且可以在类上进行配置。如果不使用@DS注解的类则使用primary配置的默认数据源。
@DS("mysql1")
@Repository("UserMapper")
public interface UserMapper extends BaseMapper<User> {
}
@DS("mysql2")
@Repository("User2Mapper")
public interface User2Mapper extends BaseMapper<User2> {
}
2.4 测试
@SpringBootTest
class DemoSpringMybatisplusApplicationTests {
@Autowired
UserMapper userMapper;
@Autowired
User2Mapper user2Mapper;
@Test
void test() {
User user = userMapper.selectById(1);
System.out.println("执行了数据源mysql1数据源:"+user.toString());
User2 user2 = user2Mapper.selectById(1);
System.out.println("执行了数据源mysql2数据源:"+user2.toString());
}
}
2.5 测试结果

3、项目结构和代码
源码下载 demo-springboot-mybatisplus  参考资料 https://blog.csdn.net/jike11231/article/details/120722718 https://blog.csdn.net/weixin_44690195/article/details/108080078 https://blog.csdn.net/qq_38353700/article/details/118583828 https://blog.csdn.net/qq_38550836/article/details/103436898
|