• 使用Spring Boot + MyBatis实现多数据源


    一、引言

    在开发中,我们经常会遇到需要连接多个数据库的情况。使用Spring Boot和MyBatis框架可以很方便地实现多数据源的配置和使用。本文将详细介绍如何在Spring Boot项目中使用多数据源。

    二、实操

    1、添加所需的依赖:

    1. <dependency>
    2. <groupId>org.mybatis.spring.bootgroupId>
    3. <artifactId>mybatis-spring-boot-starterartifactId>
    4. <version>2.2.0version>
    5. dependency>
    6. <dependency>
    7. <groupId>com.h2databasegroupId>
    8. <artifactId>h2artifactId>
    9. <scope>runtimescope>
    10. dependency>
    11. ...

    2、配置数据源和MyBatis会话工厂:

    在 application.properties 或 application.yml 文件中配置主数据源:

    1. spring.datasource.url=jdbc:mysql://localhost:3306/db1
    2. spring.datasource.username=root
    3. spring.datasource.password=password
    4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

     建一个类来配置第二个数据源和MyBatis会话工厂,例如 SecondaryDataSourceConfig

    1. @Configuration
    2. @MapperScan(basePackages = "com.example.secondary", sqlSessionTemplateRef = "secondarySqlSessionTemplate")
    3. public class SecondaryDataSourceConfig {
    4. @Bean(name = "secondaryDataSource")
    5. @ConfigurationProperties(prefix = "spring.datasource.secondary")
    6. public DataSource secondaryDataSource() {
    7. return DataSourceBuilder.create().build();
    8. }
    9. @Bean(name = "secondarySqlSessionFactory")
    10. public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) throws Exception {
    11. SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    12. sessionFactory.setDataSource(secondaryDataSource);
    13. return sessionFactory.getObject();
    14. }
    15. @Bean(name = "secondarySqlSessionTemplate")
    16. public SqlSessionTemplate secondarySqlSessionTemplate(@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
    17. return new SqlSessionTemplate(sqlSessionFactory);
    18. }
    19. }

    在 application.properties 或 application.yml 文件中配置第二个数据源:

    1. spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2
    2. spring.datasource.secondary.username=root
    3. spring.datasource.secondary.password=password
    4. spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver

    3、创建两个数据库对应的Mapper接口和Mapper XML文件:

    主数据源的Mapper接口、Mapper XML文件:

    1. package com.example.primary;
    2. // import语句
    3. @Mapper
    4. public interface PrimaryMapper {
    5. // 方法定义
    6. }
    1. "1.0" encoding="UTF-8"?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.example.primary.PrimaryMapper">
    5. mapper>

     第二个数据源的Mapper接口、Mapper XML文件与上面类似,只需将包名、namespace和SQL语句替换为对应的内容。

    使用多数据源

    在需要使用主数据源的地方注入 PrimaryMapper

    1. @Autowired
    2. private PrimaryMapper primaryMapper;

     在需要使用第二个数据源的地方注入 SecondaryMapper

    1. @Autowired
    2. private SecondaryMapper secondaryMapper;

     这样,你就可以在Spring Boot项目中使用多个数据源并使用MyBatis进行数据库操作了。需要注意的是,上述示例中使用了两个数据源,你可以根据自己的需求配置更多的数据源,只需按照类似的方式添加配置和代码。

  • 相关阅读:
    react配置 axios
    因为写保护,U盘会“假死”。如何在Windows 10上删除写保护
    计算机毕业设计Java校园旺角超市外卖平台(源码+系统+mysql数据库+Lw文档)
    Android中的适配器,你知道是做什么的吗?
    华为机试 - 金字塔
    C语言中大小写字母转换
    poium测试库之JavaScript API封装原理
    总结了 800多个 Kubectl 别名,再也不怕记不住命令了!
    git 分支管理进阶
    java计算机毕业设计web企业人事管理信息系统源码+mysql数据库+系统+lw文档+部署
  • 原文地址:https://blog.csdn.net/weixin_52721608/article/details/132765816