怎么使用SpringBoot配置多数据源
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章主要介绍了怎么使用SpringBoot配置多数据源的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用SpringBoot配置多数据源文章都会有所收获,下面我们
千家信息网最后更新 2025年02月12日怎么使用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安全错误
数据库的锁怎样保障安全
如何开展中学生网络安全教育
福田可靠服务器运维服务
数据库完整性约束需要哪种语言
农安通用网络技术服务
数据库打印文件需要加
种质资源库数据库设计要求
临桂县数据库
服务器虚拟化搭建
网络安全cp是哪个产品
方舟手游服务器怎么改密码
数据库备份网站备份有什么区别
计算机专业学计算机网络技术
安徽工业软件开发制造价格
智能软件开发专业就业
什么是服务器主板和cpu
敏捷软件开发c 版
服务器软件崩溃
主机流量通过服务器
开网络技术有限公司
在软件开发过程中要产生大量
云服务器上市公司
旧手机做服务器
河北品质网络技术咨询零售价
数据库l属性怎么判断
我的世界正常服务器推荐
linux服务器做路由器
宝坻区媒体网络技术不二之选
军队网络安全防范视频
什么原因影响网络安全
天柱山天气预报软件开发