实现步骤请移步: https://blog.csdn.net/xp541130126/article/details/81739760
感谢作者的分享, 十分的详细, 小白在实验中遇到以下问题, 在此做个记录, 帮助其他小新同学:
1. 主启动类要加以下代码, 保证启动时就注册这个类
/**
* Visual启动器
*
* @author Chill
*/
@Import(DynamicDataSourceRegister.class)
@SpringCloudApplication
public class VisualApplication {
public static void main(String[] args) {
BladeApplication.run(LauncherConstant.APPLICATION_VISUAL_NAME, VisualApplication.class, args);
}
@Bean
public DynamicDataSourceAnnotationAdvisor dynamicDatasourceAnnotationAdvisor() {
return new DynamicDataSourceAnnotationAdvisor(new DynamicDataSourceAnnotationInterceptor());
}
}
2. 数据源配置, 副数据源就算只有一个, 也要放到数组中( yml 文件 "-" 就表示数组), 不然注册数据源会报错, no bound value
#数据源配置
spring:
datasource:
master:
url: jdbc:mysql://localhost:3306/bladex?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: root
druid:
# MySql、PostgreSQL校验
validation-query: select 1
slave:
- key: slave1
url: jdbc:mysql://localhost:3306/bladex_slave?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: root
druid:
# MySql、PostgreSQL校验
validation-query: select 1
3. 切换数据源的时候, 括号内的字符串, 是副数据源 的 key ( slave1)
@DataSource("slave1")
@Select(" select * from blade_dept where id = 1123598813738675201")
public List<Map> queryDeptById2();