返回顶部
首页 > 资讯 > 后端开发 > Python >使用SpringBoot配置多数据源的经验分享
  • 390
分享到

使用SpringBoot配置多数据源的经验分享

2024-04-02 19:04:59 390人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 引入jar包2. properties配置3. 分别配置两个数据源4. Dao目录5. Entity6. Mapper文件7. Controller测试8. 结果验证1.

1. 引入jar包

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="Http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.multi.datasource</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-WEB</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.8</version>
        </dependency>

        <dependency>
            <groupId>Mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.22</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2. properties配置

分别准备两个数据源

server.port=18888
mybatis.mapper-locations=classpath:mapper/*.xml

my1.datasource.url=jdbc:mysql://10.0.0.125:3306/wyl?autoReconnect=true
my1.datasource.driverClassName=com.mysql.cj.jdbc.Driver
my1.datasource.username=root
my1.datasource.passWord=123456

my2.datasource.url=jdbc:mysql://10.0.0.160:3306/wyl?autoReconnect=true
my2.datasource.driverClassName=com.mysql.cj.jdbc.Driver
my2.datasource.username=root
my2.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;

@Mapper
public interface Test1Mapper {
    
    UserEntity query();
    
}
package com.multi.datasource.dao.my2;

import com.multi.datasource.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface Test2Mapper {
    
    UserEntity query();
    
}

5. Entity

package com.multi.datasource.entity;

import lombok.Data;

@Data
public class UserEntity {

    private String userName;

}

6. Mapper文件

从my1数据源查询

<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.multi.datasource.dao.my1.Test1Mapper">

<select id="query" resultType="com.multi.datasource.entity.UserEntity">
        select user_name as userName from t_user
    </select>

</mapper>

从my2数据源查询

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.multi.datasource.dao.my2.Test2Mapper">
    
    <select id="query" resultType="com.multi.datasource.entity.UserEntity">
        select user_name as userName from t_user
    </select>
    
</mapper>

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;

@RestController
public 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配置多数据源内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用SpringBoot配置多数据源的经验分享

本文链接: https://lsjlt.com/news/145556.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用SpringBoot配置多数据源的经验分享
    目录1. 引入jar包2. properties配置3. 分别配置两个数据源4. Dao目录5. Entity6. Mapper文件7. Controller测试8. 结果验证1. ...
    99+
    2024-04-02
  • 教你使用springboot配置多数据源
    目录一、建库建表1.1 创建数据库db1和数据库db21.2 在数据库db1中创建表db11.3 在数据库db2中创建表db2二、创建springboot项目2.1 pom.xml导...
    99+
    2024-04-02
  • 怎么使用SpringBoot配置多数据源
    这篇文章主要介绍了怎么使用SpringBoot配置多数据源的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用SpringBoot配置多数据源文章都会有所收获,下面我们一起来看看吧。1. 引入jar包pom....
    99+
    2023-06-29
  • springboot多数据源配置
    简介 开发当中经常会遇到需要进行多库多表数据整合的需求,在无法拆分项目的情况下,就需要在一个项目中配置多数据源,实现多库数据的整合。本文是在springboot框架的基础上进行的多数据源配置,可参考,也欢迎指正 1、第一步:applicat...
    99+
    2023-08-24
    spring boot mybatis java database
  • SpringBoot使用druid配置多数据源问题
    目录一、背景二、版本介绍三、项目结构四、maven依赖 五、yaml配置文件六、数据源配置文件七、启动类配置八、druid管理页面总结一、背景 使用spring boot配...
    99+
    2023-03-11
    SpringBoot配置多数据源 druid配置多数据源 druid多数据源
  • SpringBoot怎么使用druid配置多数据源
    这篇“SpringBoot怎么使用druid配置多数据源”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎...
    99+
    2023-07-05
  • springboot redis使用lettuce配置多数据源的实现
    目前项目上需要连接两个redis数据源,一个redis数据源是单机模式,一个redis数据源是分片集群模式,这里将具体配置列一下。 项目用的springboot版本为 &...
    99+
    2024-04-02
  • springboot redis如何使用lettuce配置多数据源
    这篇文章将为大家详细讲解有关springboot redis如何使用lettuce配置多数据源,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。springboot是什么springboot一种全新的编程规范...
    99+
    2023-06-14
  • springboot怎么配置多数据源
    在Spring Boot中配置多个数据源可以通过以下步骤来实现: 在pom.xml文件中添加Spring Boot对多数据源的支...
    99+
    2023-10-23
    springboot
  • springboot如何配置多数据源
    在Spring Boot中配置多数据源可以通过创建多个DataSource bean,并使用@Primary和@Qualifier注...
    99+
    2024-04-08
    springboot
  • springboot下配置多数据源的方法
    一、springboot 简介SpringBoot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提 供开箱即用的设置,这样你就可以有条不紊地开始。多...
    99+
    2023-05-31
    spring boot 多数据源
  • springboot中如何配置多数据源
    这期内容当中小编将会给大家带来有关springboot中如何配置多数据源,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、建库建表1.1 创建数据库db1和数据库db21.2 在数据库db1中创建表db1...
    99+
    2023-06-15
  • ruoyi(若依)配置多数据源(mysql+postgresql),rouyi(Springboot)多数据源设置
    一、除了MySQL驱动,我们还需要用到postgresql的驱动,所以我们先把驱动的依赖给导入进来 org.postgresql postgresql ...
    99+
    2023-08-17
    mysql postgresql spring boot
  • springboot+springJdbc+postgresql 实现多数据源的配置
    背景 最近公司在服务拆迁,接口转移,相同的功能接口到要迁移到对应的服务中,因为时间比较赶,别问为什么没给时间,没人,没资源,但是活还是得干的,为了减少工作量和稳妥的需要分两步走 ...
    99+
    2024-04-02
  • springboot 如何配置多个jndi数据源
    springboot 配置多个jndi数据源 1.在application.properties中,添加jndi配置 如下图 2.新建dataSourceConfig类 3.d...
    99+
    2024-04-02
  • 怎么在SpringBoot中配置多数据源
    本篇文章为大家展示了怎么在SpringBoot中配置多数据源,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。多数据源配置首先是配置文件这里采用yml配置文件,其他类型配置文件同理我配置了两个数据源,一...
    99+
    2023-06-14
  • springboot整合druid及多数据源配置
    前言 本篇主要分两部分 ①springboot整合druid的代码配置,以及druid的监控页面演示;②对实际场景中多数据源的配置使用进行讲解。 一、springboot整合druid的演示demo 可以用idea快速生成一个可运行的dem...
    99+
    2023-10-24
    spring boot java spring
  • springboot整合多数据源配置方式
    目录简介一、表结构二、多数据源整合1. springboot+mybatis使用分包方式整合1.1 主要依赖包1.2 application.yml 配置文件1.3 建立连接数据源的...
    99+
    2024-04-02
  • springboot mybatis druid配置多数据源教程
    目录1、项目代码结构2、导入基本依赖3、配置多数据源4、配置类5、启动类6、测试使用的表7、测试表对应的实体类8、持久层:dao层接口1、项目代码结构 2、导入基本依赖 记得需要导...
    99+
    2024-04-02
  • 详解SpringBoot和Mybatis配置多数据源
    目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑。在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL。在SpringBoot中,配...
    99+
    2023-05-31
    springboot mybatis 多数据源
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作