配置多数据源 spring boot

一、使用jdbc 配置多数据源

1.yml数据源配置

2.配置类

package com.v246.common.config.datasource;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
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 org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

//表示这个类为一个配置类
@Configuration
public class DatasourceConfig {

    // 将这个对象放入Spring容器中
    @Bean("datavisualDataSource")
    // 表示这个数据源是默认数据源
    @Primary
    @Qualifier("datavisualDataSource")
    // 读取application.properties中的配置参数映射成为一个对象
    // prefix表示参数的前缀
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.datavisual")
    public DataSource datavisualDataSource(){
        return DruidDataSourceBuilder.create().build();
    }

    @Bean("vlmsDataSource")
    @Qualifier("vlmsDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.vlms")
    public DataSource vlmsDataSource(){
        return DruidDataSourceBuilder.create().build();
    }

    @Bean("jdbcTemplate")
    public JdbcTemplate datavisualJdbcOperations(@Qualifier("datavisualDataSource") DataSource datavisualDataSource) {
        return new JdbcTemplate(datavisualDataSource);
    }
    @Bean("vlmsJdbcTemplate")
    public JdbcOperations vlmsJdbcOperations(@Qualifier("vlmsDataSource") DataSource vlmsDataSource) {
        return new JdbcTemplate(vlmsDataSource);
    }

    @Bean
    @Primary
    public PlatformTransactionManager datavisualTransactionManager(@Qualifier("datavisualDataSource") DataSource datavisualDataSource) {
        return new DataSourceTransactionManager(datavisualDataSource);
    }
    @Bean
    public PlatformTransactionManager vlmsTransactionManager(@Qualifier("vlmsDataSource") DataSource vlmsDataSource) {
        return new DataSourceTransactionManager(vlmsDataSource);
    }

    @Bean(name = "sqlSessionFactory")
    // 表示这个数据源是默认数据源
    @Primary
    // @Qualifier表示查找Spring容器中名字为DataSource的对象
    public SqlSessionFactory test1SqlSessionFactory(@Qualifier("datavisualDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                // 设置mybatis的xml所在位置
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/mapper/*.xml"));
        return bean.getObject();
    }

    @Bean(name = "vlmsSqlSessionFactory")
    // @Qualifier表示查找Spring容器中名字为DataSource的对象
    public SqlSessionFactory vlmsSqlSessionFactory(@Qualifier("vlmsDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                // 设置mybatis的xml所在位置
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/test01/*.xml"));
        return bean.getObject();
    }
}

3.测试类

public class SqlserverServiceTest {
     @Resource
     JdbcTemplate vlmsJdbcTemplate;

     @Autowired
     NamedDb db;

    @Test
    public void testTime() {

        Map<String,Object> map = vlmsJdbcTemplate.queryForMap("SELECT * FROM wx_user WHERE user_id=‘***‘");
        System.out.println(map);
        Record rc = db.findFirst("SELECT * FROM SYSC03 WHERE CGRDM=‘***‘");
        System.out.println(rc);

    }

}

二、使用mybatis 配置多数据源

1.yml数据源配置

2.prom.xml配置

        <!--引入dynamic-datasource-spring-boot-starter。-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.6</version>
        </dependency>

3.测试类

// 默认为主数据源  使用@DS("数据源名称")则使用新其他数据源@DS("vlms")
public interface BiZcPlanShipmentMapper extends IBaseMapper<BiZcPlanShipment> {

    Page<Record> getDataList(@Param("filterPage")Page<Record> page);

}

第二种mybatis 配置方法可参考 https://mp.baomidou.com/guide/dynamic-datasource.html

package com.v246.common.config.datasource;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;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 org.springframework.jdbc.core.JdbcOperations;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

//表示这个类为一个配置类@Configurationpublic class DatasourceConfig {

    // 将这个对象放入Spring容器中@Bean("datavisualDataSource")    // 表示这个数据源是默认数据源@Primary    @Qualifier("datavisualDataSource")    // 读取application.properties中的配置参数映射成为一个对象    // prefix表示参数的前缀@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.datavisual")    public DataSource datavisualDataSource(){        return DruidDataSourceBuilder.create().build();}

    @Bean("vlmsDataSource")    @Qualifier("vlmsDataSource")    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.vlms")    public DataSource vlmsDataSource(){        return DruidDataSourceBuilder.create().build();}

    @Bean("jdbcTemplate")    public JdbcTemplate datavisualJdbcOperations(@Qualifier("datavisualDataSource") DataSource datavisualDataSource) {        return new JdbcTemplate(datavisualDataSource);}    @Bean("vlmsJdbcTemplate")    public JdbcOperations vlmsJdbcOperations(@Qualifier("vlmsDataSource") DataSource vlmsDataSource) {        return new JdbcTemplate(vlmsDataSource);}

    @Bean    @Primarypublic PlatformTransactionManager datavisualTransactionManager(@Qualifier("datavisualDataSource") DataSource datavisualDataSource) {        return new DataSourceTransactionManager(datavisualDataSource);}    @Beanpublic PlatformTransactionManager vlmsTransactionManager(@Qualifier("vlmsDataSource") DataSource vlmsDataSource) {        return new DataSourceTransactionManager(vlmsDataSource);}

    @Bean(name = "sqlSessionFactory")    // 表示这个数据源是默认数据源@Primary// @Qualifier表示查找Spring容器中名字为DataSource的对象public SqlSessionFactory test1SqlSessionFactory(@Qualifier("datavisualDataSource") DataSource datasource)            throws Exception {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(                // 设置mybatis的xml所在位置new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/mapper/*.xml"));        return bean.getObject();}

    @Bean(name = "vlmsSqlSessionFactory")    // @Qualifier表示查找Spring容器中名字为DataSource的对象public SqlSessionFactory vlmsSqlSessionFactory(@Qualifier("vlmsDataSource") DataSource datasource)            throws Exception {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(                // 设置mybatis的xml所在位置new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/test01/*.xml"));        return bean.getObject();}}

原文地址:https://www.cnblogs.com/FlyingTanks/p/11647561.html

时间: 2024-07-31 03:52:53

配置多数据源 spring boot的相关文章

Spring Boot 框架学习 (一)配置并运行Spring Boot 框架

下载开发工具: 下载完成打开以后,第一步检查环境 查看jdk是否配置: 接着一定要注意,maven通常情况下它是没有给你配置的,要自行配置: 右键新建: 然后依赖选择web.跟Mybatis就行了. 创建好项目后,会发现自带了这个Application.java,这个文件就是用来启动整个项目的. 不同于SpringMVC,SpringBoot它默认自带了一个内嵌的tomcat服务器. 所以只需要右键,run-->java application,项目就启动起来了. 这里就不需要再配置一个外置的s

spring的Java配置入门(Spring Boot学习之一)

spring的Java配置 1.创建maven项目 使用idea创建maven项目,这里顺便提一下,idea真的比eclipse好用,早点熟悉吧.然后就是maven是java项目管理最主流的工具,自己先配置一个试试,很好上手. 2.导入依赖 编辑pom文件 1.首先配置一下jdk版本和编码,两种方式,按道理任意一种都可以,出问题的话两种都加上吧,如下 <build>        <finalName>spring-learn</finalName>        &l

nginx配置 多域名 spring boot项目(同台服务器多个端口)

2017-02-20 1 #user nobody; 2 worker_processes 1; 3 4 #error_log logs/error.log; 5 #error_log logs/error.log notice; 6 #error_log logs/error.log info; 7 8 #pid logs/nginx.pid; 9 10 11 events { 12 worker_connections 1024; 13 } 14 15 16 http { 17 includ

Spring Boot 整合 Druid &amp;&amp; 配置数据源监控

1. 导入 Druid 包 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> 2. application 配置文件配置 druid 数据源 spring: datasource: username: root password: r

关于Spring Boot 多数据源的事务管理

自己的一些理解:自从用了Spring Boot 以来,这近乎零配置和“约定大于配置”的设计范式用着确实爽,其实对零配置的理解是:应该说可以是零配置可以跑一个简单的项目,因为Spring Boot 有默认的配置,当默认的配置满足不了你的时候,这时候所谓的零配置只是换了一种方式而已,我们都知道程序员最擅长的就是写代码,相比来说xml文件还是有点蛋疼的: 行啊,Spring Boot说你不是擅长写代码,那我就把配置给你转换为写代码的形式,所以你会发现在Spring Boot 中使用@Configura

Spring Boot 整合 JPA 使用多个数据源

介绍# JPA(Java Persistence API)Java 持久化 API,是 Java 持久化的标准规范,Hibernate 是持久化规范的技术实现,而 Spring Data JPA 是在 Hibernate 基础上封装的一款框架.第一次使用 Spring JPA 的时候,感觉这东西简直就是神器,几乎不需要写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了.在这篇文章中,我们将介绍 Spring Boot 整合 JPA 使用多个数据源的方法.开发环境: Spring Bo

Spring Boot 配置优先级顺序

http://www.cnblogs.com/softidea/p/5759180.html 一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一点不同,配置读取可是一个让人有点伤脑筋的问题. Spring Boot提供了一种优先级配置读取的机制来帮助我们从这种困境中走出来. 常规情况下,我们都知道Spring Boot的配置会从application.pro

Spring Boot 属性配置和使用

spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot 系列 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 Spring Boot - 配置排序依赖技巧 Spring Boot - DevTools 介绍 Spring Boot 支持多种外部配置方式 这些方式优先级如下: 命令行参数 来

Spring boot将配置属性注入到bean类中

一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.com - foo.bar.com - jiaobuchong.com 1 2 3 4 5 6 下面我要将上面的配置属性注入到一个Java Bean类中,看码: import org.springframework.boot.context.properties.ConfigurationProper