怎么使用SpringBoot配置多数据源
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了怎么使用SpringBoot配置多数据源的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用SpringBoot配置多数据源文章都会有所收获,下面我们
千家信息网最后更新 2025年11月09日怎么使用SpringBoot配置多数据源
这篇文章主要介绍了怎么使用SpringBoot配置多数据源的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用SpringBoot配置多数据源文章都会有所收获,下面我们一起来看看吧。
1. 引入jar包
pom.xml文件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.6 com.multi.datasource demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 com.alibaba druid 1.1.8 mysql mysql-connector-java org.projectlombok lombok 1.16.22 org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
2. properties配置
分别准备两个数据源
server.port=18888mybatis.mapper-locations=classpath:mapper/*.xmlmy1.datasource.url=jdbc:mysql://10.0.0.125:3306/wyl?autoReconnect=truemy1.datasource.driverClassName=com.mysql.cj.jdbc.Drivermy1.datasource.username=rootmy1.datasource.password=123456my2.datasource.url=jdbc:mysql://10.0.0.160:3306/wyl?autoReconnect=truemy2.datasource.driverClassName=com.mysql.cj.jdbc.Drivermy2.datasource.username=rootmy2.datasource.password=123456
3. 分别配置两个数据源
第一个数据源
package com.multi.datasource.config;import com.alibaba.druid.pool.DruidDataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration@MapperScan(basePackages = My1DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "my1SqlSessionFactory")public class My1DataSourceConfig { static final String PACKAGE = "com.multi.datasource.dao.my1"; static final String MAPPER_LOCATION = "classpath:mapper/*.xml"; @Value("${my1.datasource.url}") private String url; @Value("${my1.datasource.username}") private String user; @Value("${my1.datasource.password}") private String password; @Value("${my1.datasource.driverClassName}") private String driverClass; @Bean(name = "my1DataSource") public DataSource my1DataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); dataSource.setMaxWait(Integer.MAX_VALUE); dataSource.setTestOnBorrow(true); dataSource.setTestOnReturn(true); dataSource.setTestWhileIdle(true); return dataSource; } @Bean(name = "my1TransactionManager") public DataSourceTransactionManager my1TransactionManager() { return new DataSourceTransactionManager(my1DataSource()); } @Bean(name = "my1SqlSessionFactory") public SqlSessionFactory my1SqlSessionFactory(@Qualifier("my1DataSource") DataSource my1DataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(my1DataSource); sessionFactory.setMapperLocations( new PathMatchingResourcePatternResolver().getResources(My1DataSourceConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); }}第二个数据源
package com.multi.datasource.config;import com.alibaba.druid.pool.DruidDataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration@MapperScan(basePackages = My1DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "my1SqlSessionFactory")public class My1DataSourceConfig { static final String PACKAGE = "com.multi.datasource.dao.my1"; static final String MAPPER_LOCATION = "classpath:mapper/*.xml"; @Value("${my1.datasource.url}") private String url; @Value("${my1.datasource.username}") private String user; @Value("${my1.datasource.password}") private String password; @Value("${my1.datasource.driverClassName}") private String driverClass; @Bean(name = "my1DataSource") public DataSource my1DataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); dataSource.setMaxWait(Integer.MAX_VALUE); dataSource.setTestOnBorrow(true); dataSource.setTestOnReturn(true); dataSource.setTestWhileIdle(true); return dataSource; } @Bean(name = "my1TransactionManager") public DataSourceTransactionManager my1TransactionManager() { return new DataSourceTransactionManager(my1DataSource()); } @Bean(name = "my1SqlSessionFactory") public SqlSessionFactory my1SqlSessionFactory(@Qualifier("my1DataSource") DataSource my1DataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(my1DataSource); sessionFactory.setMapperLocations( new PathMatchingResourcePatternResolver().getResources(My1DataSourceConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); }}4. Dao目录
为了区分两个数据源,分别设置了不同的目录
package com.multi.datasource.dao.my1;import com.multi.datasource.entity.UserEntity;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface Test1Mapper { UserEntity query(); }package com.multi.datasource.dao.my2;import com.multi.datasource.entity.UserEntity;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface Test2Mapper { UserEntity query(); }5. Entity
package com.multi.datasource.entity;import lombok.Data;@Datapublic class UserEntity { private String userName;}6. Mapper文件
从my1数据源查询
从my2数据源查询
7. Controller测试
package com.multi.datasource.controller;import com.multi.datasource.dao.my1.Test1Mapper;import com.multi.datasource.dao.my2.Test2Mapper;import com.multi.datasource.entity.UserEntity;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestControllerpublic class TestController { @Resource private Test1Mapper test1Mapper; @Resource private Test2Mapper test2Mapper; @RequestMapping("query") public void query() { UserEntity user1 = test1Mapper.query(); System.out.println("my1 dataSource:" + user1); UserEntity user2 = test2Mapper.query(); System.out.println("my2 dataSource:" + user2); }}两个数据源,对应的user_name分别是zhangsan和lisi
8. 结果验证
访问 http://localhost:18888/query,结果如下
关于"怎么使用SpringBoot配置多数据源"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么使用SpringBoot配置多数据源"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
数据
数据源
配置
两个
知识
内容
文件
目录
篇文章
结果
查询
不同
价值
操作简单
文章
易懂
更多
看吧
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小区电话 网络技术方案
河南数据软件开发服务参考价格
蚂蚁 独立软件开发商
芜湖蓝孵互联网科技有限公司招聘
软件开发工程师职业性格
海康威视电子警察前端服务器
互联网科技消费
网络安全法未进行等保测评
数据库桌上点餐的论文
软件开发源代码比不要源代码
后浪云服务器安全吗
系统软件开发 财务入账
网络安全法工作情况总结
中小学网络安全教育脚本
传奇数据库安装不了
通讯软件开发供应商
怎样查询数据库表的大小
洛阳品家网络技术有限公司
南京华锐软件开发公司
网络安全常用关键技术有哪些
管理GIS服务中的服务器
中文电子书数据库
国家网络安全四招电信诈骗
端口 连接数据库
c连接数据库语句
软件开发工程师有哪些
多维度挑战网络安全
软件开发人员工日报价
服务器运算速度慢
整合网络安全产业领域