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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 使用阿里数据源配置多数据源


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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Oracle Java 关系型数据库
Spring+Mybatis多数据源配置(二)——databaseIdProvider的使用
 在上一篇同系列的博文中,讲到配置多数据源,然后根据config.properties配置不同的数据库,进行切换。而且需要根据不同的数据库,配置不同的mybatis sql映射配置文件,如下: classpath...
2192 0
|
SQL 缓存 监控
SpringBoot整合阿里巴巴Druid数据源
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。 Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。 本文主要讲解如何整合Druid数据源及Druid常用配置项和详解
4478 1
SpringBoot整合阿里巴巴Druid数据源
|
3月前
|
Java 数据库连接 数据库
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
Mybatis是一个基于JDBC实现的,支持普通 SQL 查询、存储过程和高级映射的优秀持久层框架,去掉了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。 Mybatis主要思想是将程序中大量的 SQL 语句剥离出来,配置在配置文件中,以实现 SQL 的灵活配置。在所有 ORM 框架中都有一个非常重要的媒介——PO(持久化对象),PO 的作用就是完成持久化操作,通过该对象对数据库执行增删改的操作,以面向对象的方式操作数据库。
45 1
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
|
4月前
|
XML 监控 druid
SpringBoot整合Druid数据源并配置监控
SpringBoot整合Druid数据源并配置监控
271 1
|
5月前
|
druid
springboot1集成druid数据源
springboot1集成druid数据源
|
6月前
|
druid 关系型数据库 MySQL
数据源管理(baomidou和druid)
数据源管理(baomidou和druid)
|
7月前
|
XML Java 数据库连接
SpringBoot和Mybatis配置多数据源连接多个数据库
SpringBoot和Mybatis配置多数据源连接多个数据库
236 0
|
9月前
|
算法 Java 关系型数据库
springcloud打通mybatis连接数据库流程
springcloud打通mybatis连接数据库流程
|
9月前
|
druid Java
springboot shardingsphere druid 动态数据源切换及分库分表
springboot shardingsphere druid 动态数据源切换及分库分表
|
SQL 监控 druid
发生了什么!阿里DRUID、数据源、常见问题?
发生了什么!阿里DRUID、数据源、常见问题?
327 0
发生了什么!阿里DRUID、数据源、常见问题?

热门文章

最新文章