SpringBoot项目中如何同时操作多个数据库
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"SpringBoot项目中如何同时操作多个数据库",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot项目中如何同时操作多个
千家信息网最后更新 2025年01月19日SpringBoot项目中如何同时操作多个数据库
本篇内容主要讲解"SpringBoot项目中如何同时操作多个数据库",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot项目中如何同时操作多个数据库"吧!
在实际项目开发中可能存在需要同时操作两个数据库的场景,比如从A库读取数据,进行操作后往B库中写入数据,此时就需要进行多数据库配置。本文以操作本地和线上的MySQL数据库为例:
1、导入相关pom文件
mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-jdbc org.mybatis mybatis 3.5.5 com.alibaba druid 1.2.3 org.mybatis mybatis-spring 2.0.7 org.projectlombok lombok true
二、application.yml配置文件编写
单数据源的配置如下:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/meal_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 username: root password: root type: com.alibaba.druid.pool.DruidDataSource
多数据源的配置如下:
spring: datasource: dev: driver-class-name: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://xxx.xx.xx.xx:3306/meal_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 username: root password: root type: com.alibaba.druid.pool.DruidDataSource local: driver-class-name: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://127.0.0.1:3306/db2021?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 username: root password: root type: com.alibaba.druid.pool.DruidDataSource
经过对比可以发现:
1、多数据源的配置中需要指定具体的名称来区分不同的数据库(上述配置中的dev和local,名称可以根据具体需求自定义)
2、需要使用jdbcUrl代替url
三、数据库连接配置文件
dev数据源配置文件:
@Configuration@MapperScan(basePackages = "com.multiple.mapper.dev",sqlSessionFactoryRef = "devSqlSessionFactory")public class DevDataSourceConfig { @Primary @Bean(name = "devDataSource") @ConfigurationProperties("spring.datasource.dev") public DataSource masterDataSource(){ return DataSourceBuilder.create().build(); } @Bean(name = "devSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("devDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapping/dev/*.xml")); return sessionFactoryBean.getObject(); }}
local数据源配置文件:
@Configuration@MapperScan(basePackages = "com.multiple.mapper.local",sqlSessionFactoryRef = "localSqlSessionFactory")public class LocalDataSourceConfig { @Primary @Bean(name = "localDataSource") @ConfigurationProperties("spring.datasource.local") public DataSource masterDataSource(){ return DataSourceBuilder.create().build(); } @Bean(name = "localSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("localDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapping/local/*.xml")); return sessionFactoryBean.getObject(); }}
不同配置文件通过@MapperScan注解的内容来区分不同数据库下的mapper文件,通过@ConfigurationProperties注解来加载指定的数据源
以DevDataSourceConfig为例
四、主启动类注解修改
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
目录结构如下:
五、测试
从dev库中查询数据,取出字段插入local库中:
public interface DevMapper { @Select("select * from test") ListgetAllTest();}
public interface LocalMapper { @Insert("insert into payment(serial) values (#{name})") int insertMessage(String name);}
@SpringBootTestclass MultipleDatabaseApplicationTests { @Autowired private DevMapper devMapper; @Autowired private LocalMapper localMapper; @Test void contextLoads() { ListtestList = devMapper.getAllTest(); for(com.multiple.pojo.Test test : testList){ localMapper.insertMessage(test.getAa()); } }}
运行测试代码,从dev库中查出的数据可以成功添加至local库
该方法也适用需要使用多种不同的数据库的场景,比如MySQL和Oracle,修改数据源配置文件即可
到此,相信大家对"SpringBoot项目中如何同时操作多个数据库"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
数据
配置
数据库
文件
数据源
同时
项目
不同
多个
内容
注解
名称
场景
实际
方法
学习
查询
测试
实用
更深
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库简单操作实验报告原理
计算机网络技术大专造价师
串口通讯服务器多少钱
北京编程软件开发代码
his系统配置服务器
网络安全五年级知识点总结
陪护网络安全技能
网络安全知识观后感
成都 手机软件开发公司
电厂网络安全总体方案
网络技术训练题
上海诺基亚贝尔软件开发面试
网络技术是由什么技术
master服务器的工作原理
淘宝服务器放哪里
上海夺畅网络技术有限公司深圳分公司面试
深圳大学网络安全考研科目
图书管理数据库应该都有什么
我的世界PE服务器断开连接
数据库loader机制
网络安全绘画作品幼儿园大班
贵州果蔬软件开发
新余游戏软件开发公司电话
软件开发的信息安全方面
免费图书馆 数据库
海康威视修改服务器提示参数错误
数据库数据表大全
济南服务器维护
服务器可以删掉dns吗
驻马店网络技术发展