在需要的项目内引入 dynamic-datasource-spring-boot-starter 多数据源 依赖
<!--mybatis-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic-ds.version}</version>
</dependency>
在配置文件中配置主从数据源
# 数据源
spring:
datasource:
dynamic:
primary: master #设置默认数据库
strict: false
datasource:
master:#主数据库
url: jdbc:mysql://数据库ip:数据库端口/数据库名称?characterEncoding=utf8
username: #####
password: ######
driver-class-name: com.mysql.cj.jdbc.Driver
slave_1:#从数据库
url: jdbc:mysql://数据库ip:数据库端口/数据库名称?characterEncoding=utf8
username: #####
password: #######
driver-class-name: com.mysql.cj.jdbc.Driver
使用 ;DS 切换数据源。
;DS 可以注解在方法上或类上;同时存在就近原则 方法上注解 优先于 类上注解。
;DS(;配置的数据源名称;)
;Service
;DS(;slave;)
public class UserServiceImpl implements UserService {
;Autowired
private JdbcTemplate jdbcTemplate;
public List selectAll() {
return jdbcTemplate.queryForList(;select * from user;);
}
;Override
;DS(;slave_1;)
public List selectByCondition() {
return jdbcTemplate.queryForList(;select * from user where age >10;);
}
}
同一个方法调用了多个数据源 事务会失效 因为事务是根据数据库事务为基础实现的 所以同一个方法内涉及多个数据库时会导致事务失效
仅作为学习记录使用
SpringBoot内置http编码功能为例分析自动配置过程