SpringBoot项目中如何同时操作多个数据库
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,本篇内容主要讲解"SpringBoot项目中如何同时操作多个数据库",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot项目中如何同时操作多个
千家信息网最后更新 2024年11月25日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安全错误
数据库的锁怎样保障安全
一个数据库有几个文档
软件开发专员待遇
机动服务器连接失败
转回曾经服务器改名字
预测软件开发企业销售量
计算机作时钟服务器怎么设置
服务器上创建ftp
ios应用软件开发服务咨询
酒店门禁sql数据库
eora数据库
管家婆软件服务器名称查找方法
怎么把图片插到数据库的表
堡垒机怎么进行数据库审计
单片机如何做一个数据库
中托车福互联网科技有点限公司
学应用软件开发要学会英语吗
博乐计量管控系统数据库在哪
浙江质量网络技术咨询产品
安卓软件开发基础语言
软件开发即征即退案例
为什么培训网络安全管理员
乐商软件开发有限公司靠谱吗
杭州海康威视网络技术有限公司
网络安全校园宣传稿
如何建造属于自己的服务器
怎么下载网易服务器
腾讯云服务器注册
机器人软件开发专业
我的世界bbs服务器宣传
杨浦区参考数据库服务商收费标准