SpringBoot–基础–11–多数据源–使用@DS
代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/dynamic-datasource
1、代码
1.1、结构
1.2、代码
CommMethodCacheConfig
/**
*
* 方法缓存表
* @author <a href="&@&email">周飞</a>
* @creatorTime 2025-05-04 19:29:49
*/
@Mapper//使用默认的数据源
public interface CommMethodCacheConfigDao extends BaseMapper<CommMethodCacheConfig> {
}
@Data
@ToString
public class CommMethodCacheConfig implements Serializable {
private static final long serialVersionUID = -829564364522812891L;//序列化ID
private Long id;
private Integer cache1Open;
private Integer cache2Open;
private String methodFullPath;
private String prefixKey;
private Long expireTime;
private Integer delayExpireTime;
private Integer breakdown;
private Integer penetration;
private Integer penetrationExpireTime;
private Integer cache1Inconsistent;
private Integer cache2Inconsistent;
}
User
/**
*
* 用户基础表
* @作者 <a href="920786312@qq.com">周飞</a>
* @时间 2023-09-15 18:48:16
*/
@DS(value = "slave")//设置使用slave数据源
@Mapper
public interface UserDao extends BaseMapper<User> {
}
@Data
@ToString
public class User {
private Long id;
private String name;
private String account;
private String passwd;
private Integer sex;
private String address;
private String phone;
private String education;
}
application.yml
server:
port: 5667
servlet:
context-path: /dd
spring:
datasource:
dynamic:
# 设置默认库
primary: master
# 是否启动严格模式(true启动:不指明数据源则报错;false不启动:不指明数据源则使用默认数据源,即primary对应的数据源)
strict: false
datasource:
master:
username: root
password: root
url: jdbc:mysql://192.168.187.110:3306/test1?useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
username: root
password: root
url: jdbc:mysql://192.168.187.110:3306/test2?useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
# 去除druid配置
# 根据druid连接池的类型判断是否需要排除:如果druid连接池为starter类型,则需要排除;否则,不需要。
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
Test
@SpringBootTest
class MainTests {
@Resource
private UserDao UserDao;
@Resource
private CommMethodCacheConfigDao commMethodCacheConfigDao;
@Test
void contextLoads() {
System.out.println("slave库:"+UserDao.selectById(1));
System.out.println("master库:"+commMethodCacheConfigDao.selectById(1));
}
}
2、测试
slave库:User(id=1, name=名称11, account=账号123, passwd=2222, sex=2, address=222, phone=222, education=学历123)
master库:CommMethodCacheConfig(id=1, cache1Open=1, cache2Open=1, methodFullPath=CommonPageController.getByPK, prefixKey=, expireTime=3153600000000, delayExpireTime=0, breakdown=0, penetration=0, penetrationExpireTime=3000, cache1Inconsistent=0, cache2Inconsistent=0)