轻松搞定多数据源配置,Spring Boot与Mybatis

您所在的位置:网站首页 mybatisplus连接oracle数据库配置 轻松搞定多数据源配置,Spring Boot与Mybatis

轻松搞定多数据源配置,Spring Boot与Mybatis

2024-04-28 14:33| 来源: 网络整理| 查看: 265

🏆本文收录于 《Spring Boot从入门到精通》 ,专门攻坚指数提升

本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

代码语言:javascript复制环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE前言

本文将介绍如何在Spring Boot框架下使用mybatis-plus实现多数据源配置。多数据源配置是一个常见的需求,在实际项目中也经常遇到,因此掌握多数据源配置的技巧是非常重要的。

摘要

本文将为大家介绍如何使用Spring Boot和mybatis-plus实现多数据源配置。我们将分别介绍如何配置多个数据源以及如何使用mybatis-plus来操作这些数据源。除此之外,我们还将给出一个简单的测试用例来验证代码的正确性。

正文添加依赖和配置文件

首先,我们需要在pom.xml文件中添加依赖:

代码语言:javascript复制 com.baomidou dynamic-datasource-spring-boot-starter 3.5.0

示例截图如下:

配置多个数据源

在Spring Boot框架下配置多个数据源只需要在application.properties文件中加入多组数据源的配置即可。例如,我们配置两个数据源,分别为db1和db2:

代码语言:javascript复制spring: datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 url: jdbc:mysql://localhost:3306/springboot_db?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 slave_1: driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 url: jdbc:mysql://127.0.0.1:3306/test_db2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8 username: root password: 123456

在以上配置中,我们为两个数据源分别配置了url、username和password。需要注意的是,我们在url中使用了不同的数据库名称来区分不同的数据源。

示例截图如下:

配置mybatis-plus

在配置mybatis-plus上,我们需要创建两个数据源的配置类,分别为db1和db2。这两个配置类需要分别继承AbstractDataSourceConfig,并且需要通过使用@MapperScan注解来初始化mybatis-plus的SqlSessionFactory和MapperScannerConfigurer。

我们这里给出db1数据源的代码示例:

代码语言:javascript复制@Configuration @MapperScan(basePackages = {"com.example.db1.mapper"}, sqlSessionTemplateRef = "db1SqlSessionTemplate") public class Db1DataSourceConfig extends AbstractDataSourceConfig { @Autowired @Qualifier("db1DataSource") private DataSource db1DataSource; @Bean(name = "db1SqlSessionFactory") public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception { return super.createSqlSessionFactory(dataSource); } @Bean(name = "db1SqlSessionTemplate") public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Override public DataSource dataSource() { return db1DataSource; } @Override public MybatisPlusProperties getMybatisPlusProperties() { MybatisPlusProperties properties = new MybatisPlusProperties(); properties.setMapperLocations(new String[]{"classpath:mapper/db1/**/*.xml"}); return properties; } }

在以上代码中,我们使用@MapperScan注解来扫描指定目录下的Mapper接口,同时指定SqlSessionTemplate使用的SqlSessionFactory名称(即“db1SqlSessionFactory”)。我们在配置中也指定了Mapper文件的路径。

类似地,在db2数据源的配置中,我们只需要修改相关的名称即可。

编写Mapper接口

在编写Mapper接口时,我们需要指定使用的数据源。我们可以通过在Mapper接口上加上@DS注解来指定当前执行的方法使用的数据源。例如:

代码语言:javascript复制@DS("db1") public interface UserMapperDb1 extends BaseMapper { //... } @DS("db2") public interface UserMapperDb2 extends BaseMapper { //... }

以上代码中,我们分别为db1和db2数据源编写了一个UserMapper接口,并通过@DS注解指定了使用的数据源。

测试用例

最后,我们为我们的代码编写一个简单的测试用例来验证代码的正确性。我们可以在测试用例中通过使用@Autowired注入指定的Mapper接口来操作对应的数据源。例如:

代码语言:javascript复制@RunWith(SpringRunner.class) @SpringBootTest public class MultiDataSourceTest { @Autowired private UserMapperDb1 userMapperDb1; @Autowired private UserMapperDb2 userMapperDb2; @Test public void test() { User user1 = new User(); user1.setName("张三"); user1.setAge(18); userMapperDb1.insert(user1); // 保存至db1 User user2 = new User(); user2.setName("李四"); user2.setAge(20); userMapperDb2.insert(user2); // 保存至db2 List userList1 = userMapperDb1.selectList(null); List userList2 = userMapperDb2.selectList(null); Assert.assertEquals(userList1.size(), 1); // db1中应有1条记录 Assert.assertEquals(userList2.size(), 1); // db2中应有1条记录 } }

在以上测试用例中,我们使用了两个Mapper接口来分别向db1和db2数据源中插入了一条记录,并在之后使用了两个Mapper接口来查询各自的数据源中的记录条数。

全文小结

本文介绍了如何在Spring Boot框架下使用mybatis-plus实现多数据源配置。具体地,我们分别说明了如何配置多个数据源、如何配置mybatis-plus以及如何编写Mapper接口和测试用例。实践证明,多数据源配置在实际业务场景中非常常见,通过本文的学习,读者可以掌握多数据源配置的技巧,对于日后的项目开发工作也将会有很大的帮助。

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3