SpringBoot+Mybatis配置多数据源

本文介绍了如何在SpringBoot应用中配置多数据源,以实现数据库的读写分离。通过排除默认数据源,配置不同的数据源信息,并为每个数据源创建独立的Mapper接口和SqlSessionFactory。在服务和控制器层面分别处理不同数据源的操作,通过测试验证了多数据源配置的正确性。
摘要由CSDN通过智能技术生成
基于数据库一主多从的基础上,做读写拆分缓解数据库压力,或者在分库的基础上,对热点数据库做数据水平分表,这些都是很常见的优化行为。

具体配置可以看:
Mysql数据库主从复制同步手把手教学(Mac版配置 + Windows版配置 + 踩坑)

既然那么多库,那么代码中我们就要连接多个数据源,那么废话不多说,开始动手
我们都知道Mybatis它也是遵循着JDBC规范,要指定对应的Mapper接口对其进行动态代理,其次通过启动的时候Configuration读取配置文件,后续从里面获取用户名,驱动包,密码,端口号,数据库url等等信息,然后走JDBC那套创建链接,把连接放入连接池,创建SqlSessionFactory会话工厂(多数据源就是多个SqlSessionFactory),再通过SqlSession执行对应的SQL,返回结果集再通过resultMap进行ORM映射。

注意以下几点:

1:一定要排除默认的数据源扫描。
2:不同数据源的mapper一定要区分文件夹。
3:同一个mapper下的所有接口,都肯定是操作同一数据库的。
4:配置文件中url一定要写成jdbc-url,不然会报错: jdbcUrl is required with driverClassName

目录结构

在这里插入图片描述

那么过程就很清晰明了了,要配置多数据源,需要以下几步:

(1)排除SpringBoot的默认数据源扫描(因为这里配置多数据源的话配置文件信息要改,它默认读取的那个会读取不到)。

主启动类上面加:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
在这里插入图片描述
不然的话它会报错:
Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

(2)把多数据源配置到yml/properties/yaml文件中。


#DB1 Configuration:
spring.datasource.test1.driverClassName=com.mysql.jdbc.Driver
spring.datasource.test1.jdbc-url= jdbc:mysql://localhost:3306/cloud-frame-portal?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.test1.username=root
spring.datasource.test1.password=11111111
#DB2 Configuration:
spring.datasource.test2.driverClassName=com.mysql.jdbc.Driver
spring.datasource
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值