使用阿里数据源配置多数据源

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 使用阿里数据源配置多数据源


image.png

在微服务项目中,可能会存在一个项目使用了两个数据库,这样就需要我们配置多数据源。

1.新建配置类

其中需要配置@Primary 这个注解只能在主数据源中配置 否则会报错

@MapperScan中配置的为使用主数据源的dao和mapper存放路径,每一个数据源都有他的独有的dao和mapper路径

1. @Configuration
2. @MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
3. public class MasterDataSourceConfig {
4. 
5. // 精确到 master 目录,以便跟其他数据源隔离 
6. static final String PACKAGE = "com.airboot.bootdemo.dao.master";
7. static final String MAPPER_LOCATION = "classpath*:mapper/master/*.xml";
8. 
9. //数据库信息
10. @Bean(name = "masterDataSource")
11. @Primary
12. public DataSource masterDataSource() {
13. DruidDataSource dataSource = new DruidDataSource();
14.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
15.         dataSource.setUrl("jdbc:mysql://localhost:3306/humanresource?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
16.         dataSource.setUsername("root");
17.         dataSource.setPassword("root");
18. return dataSource;
19.     }
20. 
21. @Bean(name = "masterTransactionManager")
22. @Primary
23. public DataSourceTransactionManager masterTransactionManager() {
24. return new DataSourceTransactionManager(masterDataSource());
25.     }
26. 
27. @Bean(name = "masterSqlSessionFactory")
28. @Primary
29. public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)
30. throws Exception {
31. final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
32.         sessionFactory.setDataSource(masterDataSource);
33.         sessionFactory.setMapperLocations(
34. new PathMatchingResourcePatternResolver().getResources(MasterDataSourceConfig.MAPPER_LOCATION));
35. return sessionFactory.getObject();
36.     }
37. }

2.写入从数据源配置

除了上文所说的需要修改的都是固定写法 。照葫芦画瓢就可以了

1. @Configuration
2. @MapperScan(basePackages = SlaveDataSourceConfig11.PACKAGE, sqlSessionFactoryRef = "slaveSqlSessionFactory")
3. public class SlaveDataSourceConfig11 {
4. 
5. // 精确到 Slave 目录,以便跟其他数据源隔离
6. static final String PACKAGE = "com.airboot.bootdemo.dao.test";
7. static final String MAPPER_LOCATION = "classpath*:mapper/test/*.xml";
8. 
9. @Bean(name = "slaveDataSource")
10. public DataSource slaveDataSource() {
11. DruidDataSource dataSource = new DruidDataSource();
12.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
13.         dataSource.setUrl("jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
14.         dataSource.setUsername("root");
15.         dataSource.setPassword("root");
16. return dataSource;
17.     }
18. 
19. @Bean(name = "slaveTransactionManager")
20. public DataSourceTransactionManager slaveTransactionManager() {
21. return new DataSourceTransactionManager(slaveDataSource());
22.     }
23. 
24. @Bean(name = "slaveSqlSessionFactory")
25. public SqlSessionFactory slaveSqlSessionFactory(@Qualifier("slaveDataSource") DataSource slaveDataSource)
26. throws Exception {
27. final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
28.         sessionFactory.setDataSource(slaveDataSource);
29.         sessionFactory.setMapperLocations(
30. new PathMatchingResourcePatternResolver().getResources(SlaveDataSourceConfig11.MAPPER_LOCATION));
31. return sessionFactory.getObject();
32.     }
33. 
34. }

3.建立业务代码

主要建立dao和mapper文件夹,按照配置类扫描的路径建立文件路径。其他按照正常的写的业务代码就可以

image.png


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
JavaScript
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
2404 0
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
24575 0
|
Ubuntu Linux 程序员
交叉编译valgrind在嵌入式设备上调试程序
交叉编译valgrind在嵌入式设备上调试程序
|
druid Java 关系型数据库
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
2731 5
bootstrap+fileinput插件实现可预览上传照片功能
bootstrap+fileinput插件实现可预览上传照片功能
271 0
|
druid 数据库 Nacos
平台设计-多数据源支持
平台倡导分布数据库,最简单的分库逻辑是按业务领域
|
Java 数据库连接 数据库
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
Mybatis是一个基于JDBC实现的,支持普通 SQL 查询、存储过程和高级映射的优秀持久层框架,去掉了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。 Mybatis主要思想是将程序中大量的 SQL 语句剥离出来,配置在配置文件中,以实现 SQL 的灵活配置。在所有 ORM 框架中都有一个非常重要的媒介——PO(持久化对象),PO 的作用就是完成持久化操作,通过该对象对数据库执行增删改的操作,以面向对象的方式操作数据库。
313 1
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
|
存储 Java 关系型数据库
springboot整合多数据源的配置以及动态切换数据源,注解切换数据源
springboot整合多数据源的配置以及动态切换数据源,注解切换数据源
2323 0
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
SQL JavaScript
若依框架 ------- 三级联动之下拉框查询
若依框架 ------- 三级联动之下拉框查询
1088 0