springboot 中怎么利用mybatis实现多数据源
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇文章给大家分享的是有关springboot 中怎么利用mybatis实现多数据源,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求项
千家信息网最后更新 2025年12月03日springboot 中怎么利用mybatis实现多数据源
本篇文章给大家分享的是有关springboot 中怎么利用mybatis实现多数据源,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
需求
项目有一个需求,需要从多数据源读取数据。因此使用springboot+mybatis进行多数据源配置和操作。
依赖引入
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 mysql mysql-connector-java 8.0.13
配置文件
# ds1数据源配置spring.datasource.ds1.url=jdbc:mysql://ip1:port/database?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8spring.datasource.ds1.username=xxxxxxspring.datasource.ds1.password=xxxxxxspring.datasource.ds1.driver-class-name=com.mysql.cj.jdbc.Driver# ds2数据源配置spring.datasource.ds2.url=jdbc:mysql://ip2:port/database?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8spring.datasource.ds2.username=xxxxxxspring.datasource.ds2.password=xxxxxxspring.datasource.ds2.driver-class-name=com.mysql.cj.jdbc.Driver# ds3数据源配置spring.datasource.ds3.url=jdbc:mysql://ip3:port/database?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8spring.datasource.ds3.username=xxxxxxspring.datasource.ds3.password=xxxxxxspring.datasource.ds3.driver-class-name=com.mysql.cj.jdbc.Driver
Java配置
package com.qishu.demo.config;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.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;@Configuration@MapperScan(basePackages = "com.qishu.demo.ds1.dao", sqlSessionFactoryRef = "ds1SqlSessionFactory")public class Ds1DatasourceConfig { @Primary @Bean(name = "ds1DataSource") @ConfigurationProperties("spring.datasource.ds1") public DataSource masterDataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "ds1SqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("ds1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:ds1-mapper/*.xml")); return sessionFactoryBean.getObject(); }}package com.qishu.demo.config;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.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;@Configuration// 扫描的包路径@MapperScan(basePackages = "com.qishu.demo.ds2.dao", sqlSessionFactoryRef = "ds2SqlSessionFactory")public class Ds2DatasourceConfig { @Bean(name = "ds2DataSource") // 配置前缀 @ConfigurationProperties("spring.datasource.ds2") public DataSource masterDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "ds2SqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("ds2DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); // mapper文件目录 sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:ds2-mapper/*.xml")); return sessionFactoryBean.getObject(); }}ds3就不写了
使用方式
@Autowired private AppDAO appDAO;
修改启动类
// 排除自动注册配置@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})单元测试
// EnableAutoConfiguration注解,关闭springBoot关于mybatis的一些自动注入。@RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})public class AppDAOTest { @Autowired private AppDAO appDAO; @Test public void selectTest() { AppDO appDO = appDAO.selectByPrimaryKey(70); System.out.println(JSON.toJSONString(appDO)); }}目录结构
以上就是springboot 中怎么利用mybatis实现多数据源,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
数据
配置
数据源
文件
更多
目录
知识
篇文章
需求
实用
前缀
单元
就是
工作会
文章
方式
注解
看吧
知识点
结构
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全员中级可以干什么
数学教人软件开发
凡科互联网科技有限公司待遇
工会网络安全工作总结
串口服务器有哪些
坪山软件开发工资
数据库sql视图的作用
丽水app软件开发
大数据软件开发有限公司
服务器耗电么
数据库情况说明
总是提示网络安全什么意思
对将来数据库发展有什么看法
网络安全学习心得150字
离职后拿公司的软件开发产品
网络安全实践月漫说网络安全
网络技术教师试讲题目
樱花内网穿透无法连接服务器
我的世界七龙珠服务器2021
手机网络安全知识摘抄简短
如何保护自己的网络安全教案
新生研讨课软件开发的感想
网络安全主要检查
阳江自主可控软件开发优化价格
数据库统计新增字段
sql 删除数据库中数据
数据库 建表为主玛取名
江阴正睿服务器维修中心热线
我的世界永久免费的云服务器
双线服务器是什么